두 개의 정렬된 배열 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