我自己怎末试都是对的,但是就是一个过不了
查看原帖
我自己怎末试都是对的,但是就是一个过不了
267778
sfksf楼主2021/9/22 20:21
#include <bits/stdc++.h>
using namespace std;
// SHANG 1 XIA 2 yOU 4 ZUO 3
int a[20][20],t,y,n,i,sb;

int num;
int you()
{
    
	int k=y+1;
	
	if(i>=sb) return 0;
	
	if(a[t][k]==0&&k<=n&&k>=1&&k>=1)
	{
		i++;
		a[t][k]=i;
		y++;
		return 4;
	}else
	return 2;	
}
int  xia()
{
	int k=t+1;
	
	if(i>=sb) return 0;
	
	if(a[k][y]==0&&k<=n&&k>=1)
	{
		i++;
		a[k][y]=i;
		t++;
		return 2;
	}else
	return 3;		
}
int  zuo()
{
	int k=y-1;
	
	if(i>=sb) return 0;
	
	if(a[t][k]==0&&k<=n&&k>=1)
	{
		i++;
		a[t][k]=i;
		y--;
		return 3;
	}else
	return 1;
}
int  shang()
{
	int k=t-1;
	
	if(i>=sb) return 0;
	
	if(a[k][y]==0&&k<=n&&k>=1)
	{
		i++;
		a[k][y]=i;
		t--;
	return 1;
	}else
	return 4;		
}


int b,c,d,g;

int main(){
	scanf("%d",&n);
	t=1,y=1,i=1;sb=n*n;
	g=4; 
	a[1][1]=1;
    while(1)
    {
    	if(g==1) g=shang();
    	if(g==2) g=xia();
    	if(g==3) g=zuo();
    	if(g==4) g=you();
    //	printf("%d ",i);
    //	if(i==8) break;
    	if(g==0) break;
	}
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	{
		if(a[i][j]<=9) printf(" ");
		printf("%d",a[i][j]);
		if(j!=n) printf(" ");
		if(j==n) printf("\n");
	}
	return 0; 
}
2021/9/22 20:21
加载中...