1.分析算法
这里提供一种用简单的累加算法去解决蛇形矩阵问题,话不多说,先看原图。
认真分析的话可以发现它的行和列之间是有规律的,不多说直接上图(推荐先自己分析一手再看图)
我把第一列的数称为基数,每一行相邻的两个数,后面的数都是前面的数加上一个数变成,我把它称为加数,可以发现,每一行的数都是第一个数是基数,从第二个数开始是基数加上加数的累加得到的。而每一列的加数之间都是加1的关系,例如第一行的加数是从2开始累加的,第二行的加数是从3开始累加的 。而每一列的基数之间也是上一列的基数加上一个数得到的,我把它称为基数的增数,可以发现每一列的增数,满足第一列增数从0开始累加。我们还发现第一行有几个数,一共就有几列,比如第一行有5个数,就会有五列,我们可以设计一个循环依次把每一行打印出来,然后我们还发现每一列依次减一个数,这正好可以作为循环的终止条件,我们把n当作每一行有几个数,我们可以每循环一次就让n--,直到n是零为止。
理论成立,实践开始。
2.编写主函数
首先,先顺着把主函数敲下来,具体功能交给函数。(函数为什么需要那些参数,后面会讲,稍安勿躁,主要是先让你们看看主函数)
接下来我们来分析一下,怎么样可以让函数实现那些功能。
3.编写功能函数
首先,我们需要数组去读入每一个数,所以我们可以构造一个读入函数去读入每一个数,当然啦,每一行的个数就是数组的长度,所以我们也要把n传入读入函数里,上面讲过每一行相邻的两个数后面的数是前面的数加加数,所以我们也要把加数传入函数里,当然我们肯定也需要把基数传入函数里。众所周知,数组是一个常量地址,所以我们不需要返回什么值。那么读入函数就是一个void型函数,需要一个数组参数,和三个整型参数(一个是n,一个是加数t,一个是基数b)。
然后,我们要考虑如何打印,先看题目要求
注意最后一句话,两个数之间要有空格,最后一个数没有空格,且要有一个换行符,不然你怎么打印下一行对吧。我们在主函数里已经让n--了,所以每一行有就有n个数,再解释一下,因为每循环依次我们都让n--,每一行数的个数,就等于n的值。那么我们就可以用if语句按题目要求的格式把蛇形矩阵的每一行打印出来。所以打印函数肯定需要把n的值传进去,当然打印函数肯定需要之前读入每一个数的那个数组。既然是打印函数,那么也不需要返回什么值了。那么我们就确定了这个打印函数是一个void型,需要一共数组参数,和一共整型参数的函数。
4.后言
行啦,这样就大功告成了,打字不易如果对你有帮助的话,希望给一个赞。