- 神奇的幻方
- 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
- 分类
- (无)
- 标签
- 递交数
- 2443
- 已通过
- 1340
- 通过率
- 55%
- 被复制
- 8
- 上传者