輸入一個
6*6
數字的陣列A,每個數字間都有用
一個空格隔開
,A可以拆解成16個沙漏(hourglass)子集合,由7個數字組合,如下:
a b c
e f g
輸出16個沙漏中7個數字總和
最大值
。
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
其中最大值(19)為下列沙漏:
2 4 4
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 4
4 5 6 8 7 2
1 0 4 6 2 7
6 5 4 2 1 0
6 8 9 5 3 3
3 5 6 8 4 2
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個
以例子而言
[[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]]
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]
是為了達成這樣的結果?
1 1 1 1 1 0 1 0 0 0 0 0
1 0 0 0
1 1 1 1 1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0
1 1 0 0
0 0 2 0 2 4 2 4 4 4 4 0
1 1 1 1 1 0 1 0 0 0 0 0
0 2 4 4
0 0 0 0 0 2 0 2 0 2 0 0
0 0 2 0 2 4 2 4 4 4 4 0
0 0 2 0
0 0 1 0 1 2 1 2 4 2 4 0
還是純粹每個行加總得最大
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個
以例子而言
[[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]]
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]
是為了達成這樣的結果?
1 1 1 1 1 0 1 0 0 0 0 0
1 0 0 0
1 1 1 1 1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0
1 1 0 0
0 0 2 0 2 4 2 4 4 4 4 0
1 1 1 1 1 0 1 0 0 0 0 0
0 2 4 4
0 0 0 0 0 2 0 2 0 2 0 0
0 0 2 0 2 4 2 4 4 4 4 0
0 0 2 0
0 0 1 0 1 2 1 2 4 2 4 0
還是純粹每個行加總得最大