一个题解
2025-07-06 20:31:22
发布于:浙江
3阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int N = 1001;
int n,a[N][N],m;
int main()
{
cin>>n;
int x=1,y=(n/2)+1;
for(int i=1;i<=n*n;i)
{
a[x][y]=i;
if(x==1 and y!=n)
{
x=n;
y;
}
else if(yn and x!=1)
{
y=1;
x--;
}
else if(x1 and y==n)
{
x++;
}
else if(x!=1 and y!=n and a[x-1][y+1]==0)
{
x--;
y++;
}
else x++;
}
for(int i=1;i<=n;i){
for(int j=1;j<=n;j){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
全部评论 1
//结构体写法:虽说有点麻烦[:笑抽] #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; }
2025-07-08 来自 安徽
0
有帮助,赞一个