C语言蛇形矩阵

文章目录

每日一言

山有榛,隰有苓。云谁之思?西方美人。 --邶风·简兮


题目

解题思路

话不多说,直接看图

通过观察图表,我想到了这种方法:

我将数字放置的位置分为两大类:向右走和向左走

每大类里又分为3小类:

  1. 向左走:(1)能往左下往左下(2)左下不行向下移(3)下移不行向右移
  2. 向右走:(1)能往右上往右上(2)右上不行向右移(3)右移不行向下移

知道思路代码就很好写了

全部代码

c 复制代码
#include <stdio.h>

int main() 
{
    int n=0;
    scanf("%d",&n);
    int arr[n][n];
    int i=0,j=0,k=0;
    int f=0;//判断移动方向,0右,1左
    arr[0][0]=1;
    
    for(k=1;k<n*n;k++)
    {
        if(f)//左
        {
            if(i+1<n&&j-1>=0)//左下合理
            {
                arr[i+1][j-1]=arr[i][j]+1;
                i++;
                j--;
            }
            else //左下不合理
            {
                if(i+1<n)//下移合理
                {
                    arr[i+1][j]=arr[i][j]+1;
                    i++;
                }
                else //下移不行,向右移
                {
                    arr[i][j+1]=arr[i][j]+1;
                    j++;
                }
                    f=0;
            }
        }
        else //右
        {
            if(i-1>=0&&j+1<n)//右上合理
            {
                arr[i-1][j+1]=arr[i][j]+1;
                i--;
                j++;
            }
            else//右上不合理
            {
                if(j+1<n)//右移合理
                {
                    arr[i][j+1]=arr[i][j]+1;
                    j++;
                }
                else //右移不行,向下移
                {
                    arr[i+1][j]=arr[i][j]+1;
                    i++;
                }
                    f=1;
            }
        }
    }

	//打印
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


相关推荐
机器学习之心29 分钟前
机器学习用于算法交易(Matlab实现)
算法·机器学习·matlab
AL流云。30 分钟前
【优选算法】C++滑动窗口
数据结构·c++·算法
qq_429879672 小时前
省略号和可变参数模板
开发语言·c++·算法
飞川撸码3 小时前
【LeetCode 热题100】网格路径类 DP 系列题:不同路径 & 最小路径和(力扣62 / 64 )(Go语言版)
算法·leetcode·golang·动态规划
Neil今天也要学习3 小时前
永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
单片机·嵌入式硬件·算法
yzx9910134 小时前
基于 Q-Learning 算法和 CNN 的强化学习实现方案
人工智能·算法·cnn
iCxhust4 小时前
Prj10--8088单板机C语言8259测试(1)
c语言·开发语言
亮亮爱刷题4 小时前
算法练习-回溯
算法
眼镜哥(with glasses)5 小时前
蓝桥杯 国赛2024python(b组)题目(1-3)
数据结构·算法·蓝桥杯
apocelipes8 小时前
Linux c 运行时获取动态库所在路径
linux·c语言·linux编程