.[题目分析]本题的一种算法前面已讨论(请参见本章三填空题)这里给出另一中解法分析数的填法是按从右上到左下的蛇形沿平行于副对角线的各条对角线上将自然数从小到大填写当从右上到左下时坐标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
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []