Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm bộ tứ với Tổng cho trước trong C ++


Chúng ta có bốn mảng. Mục tiêu là tìm tứ phần tử từ bốn mảng có tổng bằng một giá trị Tổng cho trước. Các phần tử được chọn phải sao cho cả 4 phần tử đều thuộc các mảng khác nhau.

Chúng ta sẽ thực hiện việc này bằng cách duyệt qua tất cả các mảng bằng vòng lặp for và kiểm tra xem A [i] + B [j] + C [k] + D [l] ==sum. Nếu có, số lượng tăng dần.

Hãy cho chúng tôi hiểu với các ví dụ -

Đầu vào -

A[]={ 1,3,1}, B[]={ 2,4,5 } , C[]={ 1,1,2 } , D[]= { 4,4,0} Sum=5

Đầu ra - Đếm bộ tứ với tổng cho trước là - 2

Giải thích -

2 quadrutplets are:
(A[0],B[0],C[2],D[2]) → (1,2,2,0), sum=5
(A[2],B[0],C[2],D[2]) → (1,2,2,0), sum=5

Đầu vào -

A[]={ 1,1,1}, B[]={ 1,1,1 } , C[]={ 1,1,1 } , D[]= {1,1,1} Sum=3

Đầu ra - Đếm bộ tứ với tổng cho trước là - 0

Giải thích −Tổng của tất cả các phần tư sẽ là 4> 3.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy các mảng số nguyên đầu tiên [], thứ hai [], thứ ba [] và thứ tư [] có độ dài bằng nhau được khởi tạo bằng các số ngẫu nhiên.

  • Lấy các biến first_size, second_size, third_size, 4th_size để lưu trữ độ dài tương ứng của chúng.

  • Lấy tổng biến cho giá trị tổng đã cho.

  • Hàm quadruplets (int first [], int second [], int third [], int 4th [], int first_size, int second_size, int third_size, int 4th_size, int sum) nhận tất cả các mảng và độ dài của chúng với tổng và trả về số nhân bốn với tổng cho trước.

  • Duyệt qua từng mảng bằng vòng lặp FOR

  • Vòng lặp ngoài cùng 0 <=i

  • So sánh nếu đầu tiên [i] + thứ hai [j] + thứ ba [k] + thứ tư [l] ==tổng. Nếu số gia tăng đúng.

  • Ở cuối tất cả các vòng lặp sẽ có số lượng gấp bốn lần với tổng cho trước.

  • Kết quả là số lượt trả lại.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int quadruplets(int first[], int second[], int third[], int fourth[], int first_size, int second_size, int
third_size, int fourth_size, int sum){
   int count = 0;
   for (int i = 0; i < first_size; i++){
      for (int j = 0; j < second_size; j++){
         for (int k = 0; k < third_size; k++){
            for (int l = 0; l < fourth_size; l++){
               if (first[i] + second[j] + third[k] + fourth[l] == sum){
                  count++;
               }
            }
         }
      }
   }
   return count;
}
int main(){
   int first[] = { 7, -8 };
   int second[] = { 7, -2 };
   int third[] = { 4, -2 };
   int fourth[] = { 3, -4 };
   int first_size = sizeof(first) / sizeof(first[0]);
   int second_size = sizeof(second) / sizeof(second[0]);
   int third_size = sizeof(third) / sizeof(third[0]);
   int fourth_size = sizeof(fourth) / sizeof(fourth[0]);
   int sum= 0;
   cout<<"Count of quadruplets with given sum are: "<<quadruplets(first, second, third, fourth, first_size, second_size, third_size, fourth_size, sum);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of quadruplets with given sum are: 1