2020-/10月/Province_Java_B/试题C:蛇形填数
试题 C: 蛇形填数
本题总分:10 分
【问题描述】
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列的数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路:
主要就是找出规律,列出表达式
代码:
nums = [[i for i in range(50)] for i in range(50)]
nums[0][0] = 1
a = 0
b = 0
for j in range(20):
if a == 0 and b % 2 == 0:
b += 1
nums[a][b] = nums[a][b-1] + 1
while b > 0:
nums[a+1][b-1] = nums[a][b] + 1
a += 1
b -= 1
if b == 0 and a % 2 == 1:
a += 1
nums[a][b] = nums[a-1][b] + 1
while a > 0:
nums[a-1][b+1] = nums[a][b] + 1
a -= 1
b += 1
print(nums[19][19]) # 因为是从0开始,所以索引是19
运行结果: