【正确答案】正确答案:本题要求将1,2,…,n*n个自然数,按蛇形方式存放在二位数组A[n][n]中。“蛇形”方式,即是按“副对角线”平行的各对角线,从左下到右上,再从右上到左下,存放n2个整数。对角线共2,2一1条,在副对角线上方的对角线,题目中用k表示第k条对角线(最左上角k=1),数组元素的x和y方向坐标之和为k+1(即题目中的i+j=k+1)。副对角线下方第k条对角线与第2n—k条对角线对称,其元素的下标等于其对称元素的相应坐标各加(k-n)。 (1)k<=2*n一1 //共填2*n一1条对角线 (2)q=2*n—k //副对角线以下的各条对角线上的元素数 (3)k%2!=0 //k为偶数时从右上到左下,否则从左下向右上填数(本处计算下标i和j) (4)k>=n //修改副对角线下方的下标i和j (5)m++;或m=m+1 //为填下个数作准备,m变化范围1..n*n 本题解法的另一种思路见本章算法设计题第9题。
【答案解析】