求指点
查看原帖
求指点
1115386
dingxiangqian楼主2024/8/7 12:31

全wa,样例输出在结尾

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,x,y;
int a[40][40];
struct ds 
{
    int x;
    int y;
};
ds q[2000];
int main()
{
	cin>>n;
	a[1][(n+1)/2]=1;
	q[1].x=1;
	q[1].y=(n+1)/2;
	for(int i=2;i<=n*n;i++)
	{
	    if(q[i-1].x==1&&q[i-1].y!=n)
	    {
	        q[i].x=n;
	        q[i].y=q[i-1].y+1;
	        a[q[i].x][q[i].y]=i;
	    }
	     if(q[i-1].y==n&&q[i-1].x!=1)
	    {
	        q[i].y=1;
	        q[i].x=q[i-1].x-1;
	        a[q[i].x][q[i].y]=i;
	     }
             if(q[i-1].y==n&&q[i-1].x==1)
	     {//bug
	        q[i].y=q[i-1].y;
	        q[i].x=q[i-1].x+1;
	        a[q[i].x][q[i].y]=i;
	     }
	     if(q[i-1].x!=1&&q[i-1].y!=n&&a[q[i-1].x-1][q[i-1].y+1]==0)
	     {//bug
	         a[q[i-1].x-1][q[i-1].y+1]=i;
	     }
	      if(q[i-1].x!=1&&q[i-1].y!=n)
	     {
	         a[q[i-1].x+1][q[i-1].y]=i;
	     }
	}
	
	for(int i=1;i<=10;i++)
	{
	    for(int j=1;j<=10;j++)
	    {
	        cout<<a[i][j]<<" ";
	    }
	    cout<<endl;
	}
	
	
	return 0;
}
/*
0 1 0
3 0 0 
4 0 2
*/
2024/8/7 12:31
加载中...