结构体写法(有点麻烦)
2025-07-08 20:53:05
发布于:安徽
1阅读
0回复
0点赞
//结构体写法:有点麻烦,但是感觉也还行。看了大家的题解,直接用a[x][y]更简单。模拟x和y的变化即可。
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;//所在行列
};
int main(){
node a[2010];
int h[2010][2010]={0};
int n;
cin>>n;
//下标从1开始
a[1].x=1,a[1].y=n/2+1;
h[1][n/2+1]=1;
for(int i=2;i<=n*n;i++){
if(a[i-1].x==1 && a[i-1].y!=n){
a[i].x=n,a[i].y=a[i-1].y+1;
}else if(a[i-1].y==n && a[i-1].x!=1){
a[i].y=1,a[i].x=a[i-1].x-1;
}else if(a[i-1].x==1 && a[i-1].y==n){
a[i].x=a[i-1].x+1,a[i].y=a[i-1].y;
}else if(a[i-1].x!=1 && a[i-1].y!=n){
if(h[a[i-1].x-1][a[i-1].y+1]==0){
a[i].x=a[i-1].x-1,a[i].y=a[i-1].y+1;
}else{
a[i].x=a[i-1].x+1,a[i].y=a[i-1].y;
}
}
h[a[i].x][a[i].y]=i;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<h[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个