为什么我bookh和bookl用1600就对,用50不对呢,请个大佬解答下,谢谢
查看原帖
为什么我bookh和bookl用1600就对,用50不对呢,请个大佬解答下,谢谢
505142
lin135152楼主2021/7/25 10:28
#include<stdio.h>
int a[41][41];

int main(){
	int n;
    int i,j;
	int bookh[1600];//记录上一个的行
    int bookl[1600];//记录上一个的列
	scanf("%d",&n);
	a[1][n/2+1]=1;
	bookh[1]=1;
	bookl[1]=n/2+1;
	for(i=2;i<=n*n;i++)
	{
		if(bookh[i-1]==1&&bookl[i-1]!=n)
		{a[n][bookl[i-1]+1]=i;
		bookh[i]=n;bookl[i]=bookl[i-1]+1;}
        if(bookh[i-1]!=1&&bookl[i-1]==n)
		{a[bookh[i-1]-1][1]=i;
		bookh[i]=bookh[i-1]-1;bookl[i]=1;}
        if(bookh[i-1]==1&&bookl[i-1]==n)
		{a[2][n]=i;
		bookh[i]=2;bookl[i]=n;}
        if(bookh[i-1]!=1&&bookl[i-1]!=n)
		{   if(a[bookh[i-1]-1][bookl[i-1]+1]==0)
		{a[bookh[i-1]-1][bookl[i-1]+1]=i;
		bookh[i]=bookh[i-1]-1;bookl[i]=bookl[i-1]+1;}
		    else 
			{a[bookh[i-1]+1][bookl[i-1]]=i;
			bookh[i]=bookh[i-1]+1;bookl[i]=bookl[i-1];}
		}
	}
	for(i=1;i<=n;i++)
	{for(j=1;j<=n;j++)
	    printf("%d ",a[i][j]);
	printf("\n");}
}
2021/7/25 10:28
加载中...