[题目分析]判断二维数组中元素是否互不相同只有逐个比较找到一对相等的元素就可结论为不是互不相同如何达到每个元素同其它元素比较一次且只一次?在当前行每个元素要同本行后面的元素比较一次(下面第一个循环控制变量p的for循环)然后同第i+行及以后各行元素比较一次这就是循环控制变量k和p的二层for循环
int JudgEqual(ing a[m][n]int mn)
//判断二维数组中所有元素是否互不相同如是返回否则返回
{for(i=;i<m;i++)
for(j=;j<n;j++)
{ for(p=j+;p<n;p++) //和同行其它元素比较
if(a[i][j]==a[i][p]) {printf(no); return(); }
//只要有一个相同的就结论不是互不相同
for(k=i+;k<m;k++) //和第i+行及以后元素比较
for(p=;p<n;p++)
if(a[i][j]==a[k][p]) {printf(no); return(); }
}// for(j=;j<n;j++)
printf(yes); return(); //元素互不相同
}//算法JudgEqual结束
()二维数组中的每一个元素同其它元素都比较一次数组中共m*n个元素第个元素同其它m*n个元素比较第个元素同其它m*n 个元素比较……第m*n个元素同最后一个元素(m*n)比较一次所以在元素互不相等时总的比较次数为 (m*n)+(m*n)+…++=(m*n)(m*n)/在有相同元素时可能第一次比较就相同也可能最后一次比较时相同设在(m*n)个位置上均可能相同这时的平均比较次数约为(m*n)(m*n)/总的时间复杂度是O(n)
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []