AcWing 516. 神奇的幻方
原题链接
简单
作者:
懒得理你
,
2024-03-13 21:16:35
,
所有人可见
,
阅读 13
#include<bits/stdc++.h>
using namespace std;
const int N = 40;
int ans[N][N];
int n;
int main()
{
cin >> n;
ans[1][(n+1)/2] = 1;
int row = 1,col = (n+1)/2;
for(int i = 2;i<=n*n;i++)
{
if(row==1&&col!=n)
{
ans[n][col+1] = i;
row = n;col = col+1;
}
else if(row!=1 && col ==n)
{
ans[row-1][1] = i;
row--;col = 1;
}
else if(row==1&& col==n)
{
ans[row+1][col] = i;
row++;
}
else
{
if(!ans[row-1][col+1])
{
ans[row-1][col+1] = i;
row--;col++;
}
else
{
ans[row+1][col] = i;
row++;
}
}
}
//输出
for(int i = 1;i<=n;i++)
{
for(int j = 1;j<=n;j++)
{
cout<<ans[i][j]<<" ";
}
puts("");
}
return 0;
}