Online Judge【杭电】[1998]奇数阶魔方问题描述 问题分析上次校赛出了这一题也是初中无意中学的一个幻方定理这次用深搜写了一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include<stdio.h> #include<string.h> int map[20][20]; int n; int cnt; void dfs(int x,int y) { map[x][y]=++cnt; if(cnt==n*n) return ; int tx=x-1; int ty=y+1; if(tx<0) tx+=n; if(ty>=n) ty-=n; if(map[tx][ty]) { tx=x+1; ty=y; } if(tx<0) tx+=n; if(ty>=n) ty-=n; dfs(tx,ty); return ; } int main() { int T; scanf("%d",&T); while(T--) { scanf("%d",&n); memset(map,0,sizeof(map)); cnt=0; map[0][n/2]=1; dfs(0,n/2); for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { printf("%4d",map[i][j]); if(j==n-1) printf("\n"); } } } return 0; }题目地址:【杭电】[1998]奇数阶魔方