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

Đếm tứ phần từ bốn mảng đã sắp xếp có tổng bằng một giá trị x cho trước trong C ++

Chúng ta được đưa ra bốn mảng A [], B [], C [] và D []. Mục đích là tìm tất cả các phần tư của các phần tử của các mảng này sao cho A [i] + B [j] + C [k] + D [l] =x. Cả bốn mảng đều có cùng số phần tử N.

Chúng ta sẽ thực hiện việc này bằng cách duyệt qua từng mảng một lần và so sánh nếu A [i] + B [j] + C [j] + D [l] ==x. Nếu số gia tăng đúng.

Hãy cùng hiểu với các ví dụ.

Đầu vào

A[]={ 1,2,3}; B[]={ 2,3,2}; C[]={ 4,3,1}; D[]={ 3,1,1 }; X=12

Đầu ra

Count of Quadruples: 4

Giải thích

Quadruples such as ( A[i] B[j] C[k] D[l] ) are:
(2 3 4 3) , (3 2 4 3), (3 3 3 3), (3 2 4 3)
Number of quadruples : 4

Đầu vào

A[]={ 1,1,1}; B[]={ 2,2,2}; C[]={ 3,3,3}; D[]={ 4,4,4 }; X=15

Đầu ra

Count of Quadruples: 0

Giải thích

No such elements could be paired.

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 A [], B [], C [] và D [] có độ dài bằng nhau được khởi tạo với các số ngẫu nhiên.

  • Lấy biến N để lưu trữ độ dài của chúng.

  • Hàm countQuad (int a [], int b [], int c [], d [], int x, int n) nhận tất cả các mảng làm đầu vào có cùng độ dài n và trả về số đếm.

  • Duyệt qua bằng cách sử dụng bốn vòng lặp cho mỗi mảng.

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

  • So sánh nếu a [i] + b [j] + c [k] + d [l] ==x. Nếu số gia tăng đúng.

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

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

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int countQuads(int a[],int b[],int c[],int d[],int x, int n){
   int count = 0;
   for (int i = 0; i < n; i++){
      for (int j = 0; j < n; j++){
         for (int k = 0; k < n; k++){
            for (int l = 0; l < n; l++){
               int sum=a[i]+b[j]+c[k]+d[l];
               if(sum==x){
                  count++;
                  cout<<endl<<a[i]<<" "<<b[j]<<" "<<c[k]<<" "<<d[l];}
               }
            }
         }
      }
   return count;
}
int main(){
   int A[]={ 1,1,1}; int B[]={ 2,2,2}; int C[]={ 3,3,3}; int D[]={ 4,4,4 };
   int X=15;
   int N=3; //length of each array
   cout <<endl<< "Number of quadruples : "<<countQuads(A,B,C,D,X,N);
   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 -

Number of quadruples : 0