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

C++에서 두 목록의 공통 요소에 대한 최소 색인 합계

<시간/>

두 사람이 다른 도시를 선택하기를 원하고 다른 목록에 도시를 나열했다고 가정하고 공통 선택을 찾기 위해 우리는 도와야 합니다. 따라서 우리는 두 도시가 모두 표시된 도시를 찾아야 합니다.

이 작업은 집합 교차 속성과 매우 유사합니다. 두 개의 목록을 집합으로 가져온 다음 집합 교차를 수행하여 공통 요소를 가져옵니다.

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> commonInterest(string set1[], int n1, string set2[], int n2) {
   vector<string> v(min(n1, n2));
   vector<string>::iterator it;
   // Sorting both the list
   sort(set1, set1 + n1);
   sort(set2, set2 + n2);
   it = set_intersection(set1, set1 + n1, set2, set2 + n2,
   v.begin());
   return v;
}
int main() {
   string first[] = { "Kolkata", "Hyderabad", "Chennai", "Delhi" };
   int n1 = sizeof(first) / sizeof(first[0]);
   string second[] = { "Mumbai", "Kolkata", "Durgapur", "Delhi" };
   int n2 = sizeof(second) / sizeof(second[0]);
   vector<string> v = commonInterest(first, n1, second, n2);
   cout << "Common cities: ";
   for (int i = 0; i < v.size(); i++)
      cout << ' ' << v[i];
   cout << endl;
}

출력

Common cities: Delhi Kolkata