.[題目分析]本題的一種算法前面已討論(請參見本章三填空題)這裡給出另一中解法分析數的填法是按從右上到左下的蛇形沿平行於副對角線的各條對角線上將自然數從小到大填寫當從右上到左下時坐標i增加坐標j減小當j減到小於時結束然後j從開始增加而i從當前值開始減少到i<時結束然後繼續如此循環當過副對角線後在i>n時j=j+開始從左下向右上填數而當j>n時i=i+開始從右上向左下的填數直到n*n個數填完為止
void Snake_Number(int A[n][n]int n)
//將自然數n*n按蛇形填入n階方陣A中
{i=; j=; k=; //ij是矩陣元素的下標k是要填入的自然數
while(i<n && j<n)
{while(i<n && j>) //從右上向左下填數
{A[i][j]=k++; i++ ;j;}
if((j<)&&(i<n)) j=; //副對角線及以上部分的新ij坐標
else {j=j+; i=n;} // 副對角線以下的新的ij坐標
while(i> && j<n) //從左下向右上
{A[i][j]=k++; i; j++;}
if(i< && j<n) i=;
else{i=i+; j=n;}
}//最外層while
}//Snake_Number
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23045.html