Algorithm Gossip: 奇数魔方阵

来源:互联网 发布:七彩网络下载 编辑:程序博客网 时间:2024/05/22 06:35

说明:
将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; } 
0 0
原创粉丝点击