巧用数组:蛇形填数

蛇形填数

在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下方留言,我会及时回复的,相互学习呀~
(如果博客对您有些许帮助的话,点个赞吧())

猜你喜欢

转载自blog.csdn.net/qq_36560894/article/details/88059368