Day 11: 2D Arrays (阵列)
输入一个6*6
数字的阵列A,每个数字间都有用一个空格隔开,A可以拆解成16个沙漏(hourglass)子集合,由7个数字组合,如下:
a b c
d
e f g
输出16个沙漏中7个数字总和最大值。
输入样本
1 1 1 0 0 00 1 0 0 0 01 1 1 0 0 00 0 2 4 4 00 0 0 2 0 00 0 1 2 4 0
输出样本
19
其中最大值(19)为下列沙漏:
2 4 4
2
1 2 4
我的解答
arr = []for _ in range(6): #历遍6次(因共6行) arr.append(list(map(int, input().split()))) #将阵列储存到arr #将每行以空格隔开的数字转换为整数,因为map返回迭代器,须再转为列表 #以样本为例,此时arr = [[1, 1, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0], [0, 0, 2, 4, 4, 0], [0, 0, 0, 2, 0, 0], [0, 0, 1, 2, 4, 0]]a = []for i in range(0,4): #历遍arr第0-4个元素 for j in range(0,4): #历遍arr第0-4个元素的第0-4个数字 b = arr[i][j] + arr[i][j+1] + arr[i][j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2] a += [b] #将每个沙漏的总和储存到a,共16个print(max(a)) #印出沙漏总和的最大值
输入:
0 9 4 5 6 44 5 6 8 7 21 0 4 6 2 76 5 4 2 1 06 8 9 5 3 33 5 6 8 4 2
输出:39