描述
设二维数组a[1..m, 1..n] 含有m*n 个整数。写一个算法判断a中所有元素是否互不相同。
输入
多组数据,每组数据有m+1行,第一行为二维数组的行数m和列数n,之后m行为输入的二维数组。当n=0且m=0时输入结束。
输出
对于每组数据分别输出一行,若二维数组中存在相等元素则输出“YES”,否则输出“NO”。
输入样例 1
4 3 1 2 3 4 5 6 7 8 9 10 11 12 3 4 1 2 3 4 5 6 7 8 1 9 10 11 0 0
输出样例 1
NO YES
思路:
用set判断就可以了,因为set有个特性就是不能插入重复元素~
#include#include using namespace std; int main() { int m, n; while (cin >> m >> n && m != 0 && n != 0) { int flag = 0; set s; set ::iterator it = s.begin(); for (int i = 0; i < m * n; i++) { int t; cin >> t; it = s.find(t); if (it == s.end())//找不到,说明和之前的不重复 s.insert(t); else flag = 1; } if (flag == 0) cout << "NO" << endl; else cout << "YES" << endl; s.clear(); } return 0; }



