描述
设二维数组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<iostream>
#include<set>
using namespace std;
int main()
{
int m, n;
while (cin >> m >> n && m != 0 && n != 0)
{
int flag = 0;
set<int> s;
set<int>::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;
}