[自学Python纪录] HackerRank 新手30天挑战-Day11

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


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章