Trong bài viết này, chúng ta sẽ thảo luận về một chương trình để tìm kết hợp và giao điểm của hai mảng không được sắp xếp cho trước.
Hãy để chúng tôi ký hiệu hai mảng bằng ‘A’ và ‘B’. Sau đó, sự kết hợp của các mảng đó được ký hiệu là A ∪ B về cơ bản là một mảng của tất cả các phần tử trong cả hai mảng đã cho; với điều kiện mỗi phần tử chỉ lặp lại một lần.
Để tìm điều này, chúng ta sẽ tạo một mảng riêng biệt và sao chép tất cả các phần tử từ mảng đầu tiên. Sau đó, chúng ta sẽ duyệt qua các phần tử của mảng thứ hai và kiểm tra xem nó đã có mặt trong mảng liên hợp chưa. Nếu không, thì chúng tôi sẽ thêm nó vào mảng liên hợp.
Tương tự, giao điểm của hai mảng sẽ được ký hiệu là A ∩ B. Nó là một mảng gồm các phần tử có trong cả hai mảng đã cho.
Đối với điều này, chúng ta sẽ lần lượt xem qua các phần tử của mảng đầu tiên. Đồng thời, chúng tôi sẽ kiểm tra xem phần tử đó có trong mảng thứ hai hay không. Nếu phần tử có trong cả hai mảng, thì chúng tôi sẽ thêm nó vào một mảng giao nhau.
Ví dụ
#include <iostream> using namespace std; int main() { int len1 = 4, len2 = 3, flag1 = 0, flag2 = 0; int array1[len1] = {1,2,3,4}, array2[len2] = {5,3,4}; int uni[len1+len2] = {1,2,3,4}, inter[len1]; for(int k = 0; k < len2 ; k++) { flag1 = len1; for(int m = 0; m < len1; m++) { //eliminating common elements among the given arrays if(array2[k] == uni[m]) break; else if(m == len1-1) { uni[flag1] = array2[k]; flag1 = flag1+1; } } } for(int q = 0; q < len1; q++) { for(int w = 0; w < len2; w++) { //checking if both arrays contain a particular element if(array1[q] == array2[w]) { inter[flag2] = array1[q]; flag2 = flag2+1; break; } } } cout << "Union :" <<endl; for(int u = 0; u < flag1; u++) { cout << uni[u] << " "; } cout << "\nIntersection :" <<endl; for(int i = 0; i < flag2; i++) { cout << inter[i] << " "; } return 0; }
Đầu ra
Union : 1 2 3 4 Intersection : 3 4