HDU 5058 So easy

4913 단어 HDU
http://acm.hdu.edu.cn/showproblem.php?pid=5058
제목 의 대의:
두 개의 집합 을 정 하고 두 개의 집합 요 소 는 모두 n 이 며 두 개의 집합 이 같 는 지 여 부 를 구한다.
예 를 들 어 A 집합 = {5, 3, 7, 7}, B 집합 = {7, 5, 3, 3} 은 A 집합 은 B 집합 과 같다.
그들 은 모두 {3, 5, 7} 이 있 기 때문이다.C 집합 = {2, 5, 2, 5}, D 집합 = {2, 5, 2, 3}, C 집합 과 B 집합 은 같 지 않다.
왜냐하면 C = {2, 5}, D = {2, 3, 5}
문제 풀이 방향:
A 집합 과 B 집합 을 정렬 한 다음 에 중복 되 는 요 소 를 제거 하고 비교 합 니 다.
AC 코드:
 1 #include<iostream>

 2 #include<algorithm>

 3 using namespace std;

 4 

 5 #define MAXN 100+10

 6 

 7 int main(){

 8     int i, n, a[MAXN], b[MAXN];

 9     while(cin>> n){

10         for(i = 0; i < n; ++i){

11             cin>> a[i];

12         }

13         for(i = 0; i < n; ++i){

14             cin>> b[i];

15         }

16 

17         sort(a, a + n);//  

18         sort(b, b + n);

19 

20         int n1 = unique(a, a + n) - a;//       

21         int n2 = unique(b, b + n) - b;

22 

23         if(n1 == n2){

24             for(i = 0; i < n1; ++i){

25                 if(a[i] != b[i])

26                     break;

27             }

28             if(i == n1) puts("YES");

29             else puts("NO");

30         }else{

31             puts("NO");

32         }

33     }

34     return 0;

35 }

좋은 웹페이지 즐겨찾기