Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 정렬된 두 배열의 상대 보수 찾기

<시간/>

두 개의 정렬된 배열 arr1과 arr2가 있다고 가정하고 크기는 각각 m과 n입니다. 두 배열의 상대 보수를 찾아야 합니다. 그것은 우리가 arr1에는 있지만 arr2에는 없는 모든 요소를 ​​찾아야 한다는 것을 의미합니다. 따라서 배열이 A =[3, 6, 10, 12, 15]이고 B =[1, 3, 5, 10, 16]인 경우 결과는 [6, 12, 15]

이를 해결하기 위해 set_difference 함수를 사용할 수 있습니다. 문제는 기본적으로 미분 연산을 설정하기 때문입니다.

예시

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
   int first[] = {3, 6, 10, 12, 15};
   int second[] = {1, 3, 5, 10, 16};
   int n = sizeof(first) / sizeof(first[0]);
   vector<int> temp(5);
   vector<int>::iterator it, ls;
   sort(first, first + 5);
   sort(second, second + 5);
   cout << "First array :";
   for (int i = 0; i < n; i++)
      cout << " " << first[i];
   cout << endl;
   cout << "Second array :";
   for (int i = 0; i < n; i++)
      cout << " " << second[i];
   cout << endl;
   ls = set_difference(first, first + 5, second, second + 5, temp.begin());
   cout << "The result of relative complement ";
   for (it = temp.begin(); it < ls; ++it)
      cout << " " << *it;
   cout << endl;
}

출력

First array : 3 6 10 12 15
Second array : 1 3 5 10 16
The result of relative complement 6 12 15