超时怎么搞
查看原帖
超时怎么搞
1069315
hm114514楼主2023/9/22 12:14
int main()
{
	int n ;
	scanf("%d",&n);
	int a[n][n] ;
	for(int i = 0;i < n;i++){
		for(int j = 0;j < n;j++){
			a[i][j] = 0;
		}
	}
	int m = 1;
	int x = -1;
	int y = 0;
	while(m <= n*n){
	 	while(x < n&&!a[x+1][y]){
	 		a[++x][y] = m++;
		}
		while(y < n&&!a[x][y+1]){
			a[x][++y] = m++;
		}
		while(x >= 0&&!a[x-1][y]){
			a[--x][y] = m++;
		}
		while(y >= 0&&!a[x][y-1]){
			a[x][--y] = m++;
		}
}
	for(int i = 0;i < n;i++){
		for(int j = 0;j < n;j++){
			printf("%3d",a[j][i]);
		}
		printf("\n");
	}
}
2023/9/22 12:14
加载中...