[題目分析]判斷二維數組中元素是否互不相同只有逐個比較找到一對相等的元素就可結論為不是互不相同如何達到每個元素同其它元素比較一次且只一次?在當前行每個元素要同本行後面的元素比較一次(下面第一個循環控制變量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)
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23019.html