版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
```/