1 条题解
-
0
Guest
-
3
思路
模拟题, 和 表示上一个数的位置,看清点题别写错了。
code
#include<bits/stdc++.h> using namespace std; int n; int hf[100][100]; int h,l; int main(){ cin>>n; hf[1][(n+1)/2]=1; h=1,l=(n+1)/2; for(int i=2;i<=n*n;i++){ if(h==1&&l!=n) hf[n][l+1]=i,h=n,l+=1; else if(l==n&&h!=1) hf[h-1][1]=i,h-=1,l=1; else if(h==1&&l==n) hf[h+1][l]=i,h+=1; else if(h!=1&&l!=n){ if(hf[h-1][l+1]==0){ hf[h-1][l+1]=i; h-=1,l+=1; }else{ hf[h+1][l]=i; h+=1; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout<<hf[i][j]<<" "; } cout<<'\n'; } }
- 1
信息
- ID
- 478
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 3
- 上传者