微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
问题描述
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
…
(1)
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列的数是多少?
解决方案
通过观察排列规律可以发现要寻找的数可以通过所在的行数,列数,斜排(右上—左下)以及该斜排最大的数之间存在的关系来求得。具体解决方法如下:通过行数,列数求出该数在第几斜排,再求出该斜排最大的数,然后判断斜排奇偶性,若为奇,则答案为最大的数减去行数加一;若为偶,则答案为最大的数减去列数加一。
a = int(input())#第几行 b = int(input())#第几列 c = a+b-1#第几斜排 n = 0 for i in range(1, c+1): n += i#c斜排的最后一个数 if c % 2 != 0:#奇偶性 ans = n - a + 1#等于最大的数减行数加1 else: ans = n - b + 1#等于最大的数减列数加1 print(ans) |
结语
解决了一道蓝桥杯一道填空题,培养做题与学习思维,对于知识的应用不够熟练,还需要更多的转换思维方式解题;之后巩固基础知识,培养更活跃的思维方式。
主编:欧洋