蛇形填数

#include<stdio.h>
#include<string.h>
#define max 20
int a[max][max];
int main()
{
    int n;
    int count = 1;
    scanf("%d",&n);
    int x = 0,y = n - 1;
    memset(a,0,sizeof(a));
    a[0][n-1] = 1;//先进行赋值
    while (count < n * n)
    {
        while(!a[x + 1][y] && x  + 1 < n)  a[++x][y] = ++count;//向下,并且判断下一个是否符合,因此就需要先将a[0][n-1]=1,先进行赋值
        while(!a[x][y - 1] && y - 1 >= 0 ) a[x][--y] = ++count;//向左
        while(!a[x-1][y] && x -1 >= 0)  a[--x][y] = ++count;//向上
        while(!a[x][y+1] && y + 1 < n) a[x][++y] = ++count;//向右

    }
    for(int i =0; i < n;i++)
    {
        for(int j =0;j < n ;j++)
        {
            printf("%-3d ",a[i][j] );
        }
        printf("\n");
    }
    return 0;
}

先进行判断,在进行填数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值