首页 > 代码库 > HDU 5058 So easy

HDU 5058 So easy

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 }

 

HDU 5058 So easy