NYOJ - 33:蛇形填数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wingrez/article/details/89508264

蛇形填数

来源:NYOJ

标签:基础

参考资料:

相似题目:

题目

在nn方陈里填入1,2,…,nn,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4

输入

直接输入方陈的维数,即n的值。(n<=100)

输出

输出结果是蛇形方陈。

输入样例

3

输出样例

7 8 1
6 9 2
5 4 3

参考代码

#include<cstdio>

const int MAXN=105;

int arr[MAXN][MAXN];
int n;
int dx[4]={1, 0, -1, 0}; //方向
int dy[4]={0, -1, 0, 1};

int main(){
	scanf("%d",&n);
	int x=0, y=n-1;
	int dir=0;
	for(int i=1;i<=n*n;i++){
		arr[x][y]=i; 
		int nx=x+dx[dir];
		int ny=y+dy[dir];
		if(nx>n-1 || ny>n-1 || nx<0 || ny<0 || arr[nx][ny]!=0){
			dir=(dir+1)%4;	 //改变方向
		}
		x+=dx[dir];
		y+=dy[dir];
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}
```/

猜你喜欢

转载自blog.csdn.net/wingrez/article/details/89508264