描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。
例如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
这道题的关键是学会怎么使用while控制数组的下左上右方向的移动,而且还要判断这个数的下一个数字是不是空的,如果是空的话,那么才可以往里面添加新的数字,不允许出现数据的重叠;下面是源代码
#include<stdio.h>
int main(){
int a[100][100]={0};
int n,i,j,x,y,s;
s=1;
scanf("%d",&n);
x=0;
y=n-1;
a[x][y]=1;
while(s<n*n){//向下
while (x+1<n&&a[x+1][y]==0){
a[++x][y]=++s;
}//向左
while (y>0&&a[x][y-1]==0){
a[x][--y]=++s;
}//向上
while (x>0&&a[x-1][y]==0){
a[--x][y]=++s;
}//向右
while (y+1<n&&a[x][y+1]==0){
a[x][++y]=++s;
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}