蓝桥杯ACM算法题:蛇行矩阵 ------ python编程
题目
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输入:
5
输出:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
分析:
- 这是一个倒的半三角
- 每行和列中数之间有规律变化
- 每行之间的变化有区别
这一道花了几个小时,先编程了一个倒半三角,想再写数字但无从下手,就找答案发现都看不懂,上百度终于找到一个和我做的有点相像的答案,我将它的代码一步一步地分析,下面是代码原处
代码原处
代码分析:
a=1 定义第一个数的值
row=int(input()) 输入行数
for i in range(1,row+1): 遍历行数1-5行
begin=a 开头等于a的值,a的值会变化
if(beginrow):如果开头等于最后一行就直接输出值
print(begin)
else:如果开头不等于最后一行输出值再输出一个空格
print(begin,end=" ")
for j in range(i+1,row+1):遍历列数,由于每行第一列都输出了只需要输出剩下列的值
begin+=j每列的值由前一个数加这个数的列得来(比如第一行第二个数是3第三个数等于3加列数3=6)
if(jrow):如果列数是最后一列就直接输出值
print(begin)
else:如果不是最后一列输出值再输出空格
print(begin,end=" ")
a+=i每行第一个数的值(由前一个数加上它的行数,比如第三行是4第四行就是4+3=7)
解析有些乱可以复制粘贴到编辑器中看
列数的值容易让人晕
列数的遍历是
2 3 4 5
3 4 5
4 5
5
遍历次数和数字无关,遍历四个数就是四次(这个我一开始没搞懂所以用了很多时间)
我总以为是
2 3 4 5
2 3 4
2 3
2