1 条题解
-
1罗悦容 (Sharon) LV 9 @ 2023-1-28 12:31:37
按题意模拟即可。 对应:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int main() { int n,a[40][40],x[1600],y[1600],num;//坐标记录 memset(a,0,sizeof(a));//重置 scanf("%d",&n); if(n==1)//特殊判断 { printf("1\n"); return 0; } a[1][(n/2)+1]=1; x[1]=1;//行 y[1]=(n/2)+1;//列 for(num=2;num<=n*n;num=num+1) { if((x[num-1]==1)&&(y[num-1]!=n))//按题意判断 { x[num]=n; y[num]=y[num-1]+1; } else if((y[num-1]==n)&&(x[num-1]!=1)) { x[num]=x[num-1]-1; y[num]=1; } else if((y[num-1]==n)&&(x[num-1]==1)) { y[num]=y[num-1]; x[num]=x[num-1]+1; } else if(a[x[num-1]-1][y[num-1]+1]==0) { x[num]=x[num-1]-1; y[num]=y[num-1]+1; } else { y[num]=y[num-1]; x[num]=x[num-1]+1; } a[x[num]][y[num]]=num;//存入数字 } for(int i=1;i<=n;i=i+1)//输出 { for(int j=1;j<=n;j=j+1)printf("%d ",a[i][j]); printf("\n"); } return 0; }
- 1
信息
- ID
- 752
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 9
- 已通过
- 6
- 上传者