您的位置:首页 > 其它

[NOIP 2015] Day.1 T1 神奇的幻方 [模拟]

2016-07-18 08:19 417 查看




#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n;
const int maxn = 50;
int a[maxn][maxn];
int cnt = 0;
void dfs(int hang,int lie)
{
if(cnt == n*n)return;
if(hang==1)
{
if(lie!=n)
{
a
[lie+1]=++cnt;
dfs(n,lie+1);
}
else
{
a[2][lie]=++cnt;
dfs(2,lie);
}
}
else if(lie==n&&hang!=1)
{
a[hang-1][1]=++cnt;
dfs(hang-1,1);
}
else if(hang!=1&&lie!=n)
{
if(!a[hang-1][lie+1])
{
a[hang-1][lie+1]=++cnt;
dfs(hang-1,lie+1);
}
else
{
a[hang+1][lie]=++cnt;
dfs(hang+1,lie);
}
}
}
bool flag = 0;
int main()
{
#define LOC
#ifdef LOC
freopen("magic.in","r",stdin);
freopen("magic.ans","w",stdout);
#endif
scanf("%d",&n);
a[1][(n+1)/2] = ++cnt;
dfs(1,(n+1)/2);
if(flag)
{
n++;

}
for(int i=1;i<=n;i++)
{
for(int j=1;j<n;j++)printf("%d ",a[i][j]);
printf("%d",a[i]
);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  NOIP