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

Tìm các phần tử chung trong ba mảng đã sắp xếp trong C ++


Giả sử chúng ta có ba mảng với một số phần tử. Chúng ta phải tìm tất cả các phần tử chung có trong ba mảng này. Giả sử các phần tử này là [10, 12, 15, 20, 25], [10, 12, 13, 15] và [10, 12, 15, 24, 25, 26], thì các phần tử chung trong ba mảng này là 10 , 12 và 15.

Giả sử phần tử hiện tại được duyệt trong mảng A1 là x, A2 là y và A3 là z. Chúng tôi có thể có các trường hợp sau cho họ -

  • Nếu x, y và z giống nhau, thì chúng tôi sẽ in bất kỳ thành phần nào trong số chúng và tăng mỗi phần tử mảng lên 1

  • Khi x

  • Khi x> z và y> z, thì chúng ta sẽ chuyển sang A3, vì z không thể là phần tử chung.

Ví dụ

#include<iostream>
using namespace std;
void findCommonValues(int A1[], int A2[], int A3[], int n1, int n2, int n3) {
   int i = 0, j = 0, k = 0;
   while (i < n1 && j < n2 && k < n3) {
      if (A1[i] == A2[j] && A2[j] == A3[k]) {
         cout << A1[i] << " "; i++; j++; k++;
      }
      else if (A1[i] < A2[j])
         i++;
      else if (A2[j] < A3[k])
         j++;
      else
         k++;
   }
}
int main() {
   int A1[] = {10, 12, 15, 20, 25};
   int n1 = sizeof(A1)/sizeof(A1[0]);
   int A2[] = {10, 12, 13, 15};
   int n2 = sizeof(A2)/sizeof(A2[0]);
   int A3[] = {10, 12, 15, 24, 25, 26};
   int n3 = sizeof(A3)/sizeof(A3[0]);
   cout << "Common elements are: ";
   findCommonValues(A1, A2, A3, n1, n2, n3);
}

Đầu ra

Common elements are: 10 12 15