求助
查看原帖
求助
125227
麟落楼主2021/7/29 22:02

求助

#include<bits/stdc++.h>
using namespace std;
int n,ans[40][40];
struct FLAG
{
    int i;
    int j;
};
FLAG flag[1600];
int main()
{
	cin>>n;
	for(int k=1;k<=n*n;k++)
	{
		if(k==1)
		{
			ans[1][(n+1)/2]=k;
			flag[k].i=1;
			flag[k].j=(n+1)/2;
		}
		else if(flag[k-1].i==1&&flag[k-1].j!=n)
		{
			ans[n][flag[k-1].j+1]=k;
			flag[k].i=n;
			flag[k].j=flag[k-1].j+1;
		}
		else if(flag[k-1].i!=1&&flag[k-1].j==n)
		{
			ans[flag[k-1].j-1][1]=k;
			flag[k].i=flag[k-1].i-1;
			flag[k].j=1;
		}
		else if(flag[k-1].i==1&&flag[k-1].j==n)
		{
			ans[flag[k-1].i+1][flag[k-1].j]=k;
			flag[k].i=flag[k-1].i+1;
			flag[k].j=flag[k-1].j;
		}
		else
		{
			if(ans[flag[k-1].i-1][flag[k-1].j+1]==0)
			{
				ans[flag[k-1].i-1][flag[k-1].j+1]=k;
				flag[k].i=flag[k-1].i-1;
				flag[k].j=flag[k-1].j+1;
			}
			else
			{
				ans[flag[k-1].i+1][flag[k-1].j]=k;
				flag[k].i=flag[k-1].i+1;
				flag[k].j=flag[k-1].j; 
			}
		}
	}
	for(int ii=1;ii<=n;ii++)
	{
		for(int jj=1;jj<=n;jj++)
		{
			cout<<ans[ii][jj]<<' ';
		}
		cout<<endl;
	}
} 
2021/7/29 22:02
加载中...