为什么会超时?
查看原帖
为什么会超时?
1104356
moorrunner楼主2023/10/11 15:59
#include <stdio.h>
int main(void){
	int N;
	int k;
	int i,j;
	scanf("%d",&N);
	int hf[N][N];
	int posx=1,posy=(N+1)/2;
	for(i=0;i<N;i++){
		for(j=0;j<N;j++){
			hf[i][j]=0;
		}
	}
	for(k=1;k<=N*N;k++){
		if(k==1){
			hf[1][(N+1)/2]=1;
		}
		else if(posx==1 && posy!=N){
			hf[posx=N][++posy]=k;
		}
		else if(posx!=1 && posy==N){
			hf[--posx][posy=1]=k;
		}
		else if(posx==1 && posy==N){
			hf[++posx][posy]=k;
		}
		else if(posx!=1 && posy!=N){
			 if(hf[posx-1][posy+1]==0){
			 	hf[--posx][++posy]=k;
			 }
			 else{
				hf[++posx][posy]=k;
			}	
		}
	}	
	for(i=1;i<=N;i++){
		for(j=1;j<=N;j++){
			printf("%d ",hf[i][j]);
		}
		printf("\n");
	}	
	return 0;
} 
2023/10/11 15:59
加载中...