奇数幻方
Posted pengcheng-official
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇数幻方相关的知识,希望对你有一定的参考价值。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int INF=0x3f3f3f3f; 5 const int base=131; 6 const int mod=1e9+7; 7 const int Maxn=1e6+5; 8 int n,sx,sy; 9 bool flag=true; 10 int a[15][15]; 11 12 void print() 13 for(int i=1;i<=n;i++) 14 for(int j=1;j<=n;j++) 15 printf("%d ",a[i][j]); 16 17 printf("\n"); 18 19 20 21 void dfs(int x,int y,int k) 22 //cout<<"xy:"<<x<<" "<<y<<endl; 23 //cout<<"k:"<<k<<endl; 24 if(k==n*n+1 && flag) 25 print(); 26 flag=false; 27 return; 28 29 int dx=x-1,dy=y-1; 30 if(dx>0 && dy>0 && a[dx][dy]==0) 31 a[dx][dy]=k; 32 dfs(dx,dy,k+1); 33 34 else if(a[dx][dy]!=0) 35 a[x+1][y]=k; 36 dfs(x+1,y,k+1); 37 38 else if(dx<=0 && dy<=0) 39 a[x+1][y]=k; 40 dfs(x+1,y,k+1); 41 42 else if(dx<=0 && dy>0) 43 a[n][dy]=k; 44 dfs(n,dy,k+1); 45 46 else if(dy<=0 && dx>0) 47 a[dx][n]=k; 48 dfs(dx,n,k+1); 49 50 51 52 53 int main() 54 scanf("%d",&n); 55 a[1][n/2+1]=1; 56 sx=1;sy=n/2+1; 57 dfs(sx,sy,2); 58 return 0; 59
以上是关于奇数幻方的主要内容,如果未能解决你的问题,请参考以下文章