- 神奇的幻方
 - @ 2015-12-27 13:36:22
 
#include <iostream>
    using namespace std;
    int a[1001][1001],n;
    void dfs(int,int,int);
    int main()
    {cin>>n;
    dfs(1,n/2+1,1);
    for(int i=1;i<=n;i++)
     {for(int j=1;j<=n;j++)
      cout<<a[i][j]<<" ";cout<<endl;}
    }
    void dfs(int x,int y,int step)
    {if(step==n*n+1) return;
    a[x][y]=step;
    int tx=x-1,ty=y+1;
    if(tx<1) tx=tx+n;
    if(tx>n) tx=tx-n;
    if(ty<1) ty=ty+n;
    if(ty>n) ty=ty-n;
    if(a[tx][ty]==0) dfs(tx,ty,step+1);
    else dfs(x+1,y,step+1);
    }
0 条评论
  
  目前还没有评论...
            信息
- ID
 - 1978
 - 难度
 - 2
 - 分类
 - (无)
 - 标签
 - 递交数
 - 2445
 - 已通过
 - 1342
 - 通过率
 - 55%
 - 被复制
 - 9
 - 上传者