硬核用简单累加算法拆分蛇形矩阵

4 篇文章 0 订阅
2 篇文章 0 订阅

       1.分析算法

         这里提供一种用简单的累加算法去解决蛇形矩阵问题,话不多说,先看原图。

 

         认真分析的话可以发现它的行和列之间是有规律的,不多说直接上图(推荐先自己分析一手再看图)

        我把第一列的数称为基数,每一行相邻的两个数,后面的数都是前面的数加上一个数变成,我把它称为加数,可以发现,每一行的数都是第一个数是基数,从第二个数开始是基数加上加数的累加得到的。而每一列的加数之间都是加1的关系,例如第一行的加数是从2开始累加的,第二行的加数是从3开始累加的 。而每一列的基数之间也是上一列的基数加上一个数得到的,我把它称为基数的增数,可以发现每一列的增数,满足第一列增数从0开始累加。我们还发现第一行有几个数,一共就有几列,比如第一行有5个数,就会有五列,我们可以设计一个循环依次把每一行打印出来,然后我们还发现每一列依次减一个数,这正好可以作为循环的终止条件,我们把n当作每一行有几个数,我们可以每循环一次就让n--,直到n是零为止。

        理论成立,实践开始。

  2.编写主函数

        首先,先顺着把主函数敲下来,具体功能交给函数。(函数为什么需要那些参数,后面会讲,稍安勿躁,主要是先让你们看看主函数)

 

       

       

        接下来我们来分析一下,怎么样可以让函数实现那些功能。

  3.编写功能函数   

        首先,我们需要数组去读入每一个数,所以我们可以构造一个读入函数去读入每一个数,当然啦,每一行的个数就是数组的长度,所以我们也要把n传入读入函数里,上面讲过每一行相邻的两个数后面的数是前面的数加加数,所以我们也要把加数传入函数里,当然我们肯定也需要把基数传入函数里。众所周知,数组是一个常量地址,所以我们不需要返回什么值。那么读入函数就是一个void型函数,需要一个数组参数,和三个整型参数(一个是n,一个是加数t,一个是基数b)。

        然后,我们要考虑如何打印,先看题目要求 

         注意最后一句话,两个数之间要有空格,最后一个数没有空格,且要有一个换行符,不然你怎么打印下一行对吧。我们在主函数里已经让n--了,所以每一行有就有n个数,再解释一下,因为每循环依次我们都让n--,每一行数的个数,就等于n的值。那么我们就可以用if语句按题目要求的格式把蛇形矩阵的每一行打印出来。所以打印函数肯定需要把n的值传进去,当然打印函数肯定需要之前读入每一个数的那个数组。既然是打印函数,那么也不需要返回什么值了。那么我们就确定了这个打印函数是一个void型,需要一共数组参数,和一共整型参数的函数。

4.后言

        行啦,这样就大功告成了,打字不易如果对你有帮助的话,希望给一个赞。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值