BJFU_数据结构习题_260二维数组中的元素查重

欢迎登录北京林业大学OJ系统
http://www.bjfuacm.com

260二维数组中的元素查重

描述
设二维数组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
using namespace std;
int Check(int a[20][20],int m,int n)
{
    int i,j,p,k;
    for(i=0;i<m;i++)
        for(j=0;j<n-1;j++)		//判断a[i][j]是否重复
        {
            for(p=j+1;p<n;p++)		//用p来保存列,先比较同一行的数据
                if(a[i][j]==a[i][p])
                {
                    cout<<"YES"<<endl;
                    return 1;
                }
              for(k=i+1;k<m;k++)	//用k来保存行,开始比较下一行的数据
                for(p=0;p<n;p++)	//用p来保存列,比较第k+1行的数据
                     if(a[i][j]==a[k][p])
                    {
                          cout<<"YES"<<endl;
                          return 1;
                    }
        }
      cout<<"NO"<<endl;
    return 0;
} 
int main()
{
    int m,n;
    while(cin>>m>>n&&m!=0&&n!=0)
    {
        int a[20][20],i,j;
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
                cin>>a[i][j];		//输入二维数组
        Check(a,m,n);        		//查重判断
    }
    return 0;
}

你可能感兴趣的:(北林数据结构习题)