蛇形填数
在n×n方阵里填入1,2,3,…,n*n,要求填成蛇形。例如,n=4时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
分析: 蛇形填数乍一看处理起来比较复杂,但是利用数组来分析的话,我们可以发现规律:数字在数组a[1][n]开始填数,1.向下填 2.向左填 3.向上填 4.向右填 这样的一个循环,直到填入的数字等于n*n时停止填数。我们可以用while循环嵌套while循环来解决这个问题。
代码如下(C语言)
#include<stdio.h>
#include<string.h>
#define maxn 105
int a[maxn][maxn]; // 创建二维数组
int main(){
int n;
scanf("%d",&n);
memset(a,0,sizeof(a));
int i=0,j=n,k=1;
while(k<=n*n){
while(i<n && !a[i+1][j]) a[++i][j]=k++; // 向下填数
while(j>1 && !a[i][j-1]) a[i][--j]=k++; // 向左填数
while(i>1 && !a[i-1][j]) a[--i][j]=k++; // 向上填数
while(j<n && !a[i][j+1]) a[i][++j]=k++; // 向右填数
}
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++)
printf("%3d",a[i][j]);
printf("\n");
}
return 0;
}
博主每天都会更新算法方面或者关于计算机其他方面的blog,大家如果有什么建议或者有更好的思路方法,可以先关注一下博主并在blog下方留言,我会及时回复的,相互学习呀~
(如果博客对您有些许帮助的话,点个赞吧(▽))