模拟
題目傳送門
簡單模拟,按照題目給你的方法填就行了。
劃水代碼:
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 39
#define MAXM 1521
using namespace std;
int n;
int a[MAXN+][MAXN+],f[MAXM+][];
int main(){
scanf("%d",&n);
a[][n/+]=; f[][]=; f[][]=n/+;
for (int i=;i<=n*n;i++){
int x=f[i-][],y=f[i-][];
if (x==&&y!=n){
a[n][y+]=i; f[i][]=n; f[i][]=y+;
}
if (x!=&&y==n){
a[x-][]=i; f[i][]=x-; f[i][]=;
}
if (x==&&y==n){
a[x+][y]=i; f[i][]=x+; f[i][]=y;
}
if (x!=&&y!=n)
if (!a[x-][y+]){
a[x-][y+]=i; f[i][]=x-; f[i][]=y+;
}
else{
a[x+][y]=i; f[i][]=x+; f[i][]=y;
}
}
for (int i=;i<=n;i++){
for (int j=;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return ;
}