描述
设二维数组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
#include <iostream>
using namespace std;
int CheckSame(int m,int n,int a[]);
int main()
{
while(1)
{
int m,n;int i,j;
int res=0;
cin>>m>>n;
if(0==m && 0==n) break;
int a[m*n];
for(i=0;i<m*n;i++)
cin>>a[i];
res=CheckSame(m,n,a);
if(1==res) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
int CheckSame(int m,int n,int a[])
{
int cmp;int i,k;
for(i=0;i<m*n;i++)
{
cmp=a[i];
for(k=i+1;k<m*n;k++)
if(cmp==a[k])
{
//cout<<cmp<<"!!!"<<a[k]<<" "<<i<<k<<endl;
return 1;
}
}
return 0;
}