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 }