说明:
将1到n(为奇数)的数字排列在nxn的方阵上,且各行、各列与各对角线的和必须相同
解法
1在一行正中央,依次斜填切莫忘;
上出框界往下填,右出框界往左填;
重复下移一格填,出角重复一个样。
#include <stdio.h>
#define N 7
int main(void) {
int i, j, key;
int square[N+1][N+1] = {0};
i = 0;
j = (N+1) / 2;
for(key = 1; key <= N*N; key++) {
if((key % N) == 1) //处理重复情况
i++;
else {
i--;
j++;
}
if(i == 0) //处理上出边界情况
i = N;
if(j > N) //处理右出边界情况
j = 1;
square[i][j] = key;
}
for(i = 1; i <= N; i++) { //输出方阵
for(j = 1; j <= N; j++)
printf("%2d ", square[i][j]);
printf("\n");
}
return 0;
}