用于查找我们可以从 Python 中消失的硬币矩阵中获得的最大硬币的程序
假设我们有一个2D矩阵,其中每个单元格矩阵[r,c]表示该单元格中存在的硬币数量。当我们从矩阵[r,c]中捡起硬币时,第(r-1)和(r+1)行上的所有硬币都会消失,矩阵[r,c+1]和两个单元格处的硬币也会消失矩阵[r,c-1]。我们必须找到我们可以收集的最大数量的硬币。
所以,如果输入是这样的
那么输出将是26,因为我们可以用硬币8、6、9和3选择单元格,所以总数是26。
示例
让我们看看以下实现以获得更好的理解-
def getmax(arr):
prev_max, curr_max = 0, 0
res = 0
for num in arr:
temp = curr_max
curr_max = num + prev_max
prev_max = max(temp, prev_max)
res = max(res, curr_max)
return res
def solve(matrix):
if not matrix:
return 0
m, n = len(matrix), len(matrix[0])
row_sum = [0 for _ in range(m)]
for i in range(m):
row_sum[i] = getmax(matrix[i])
return getmax(row_sum)
matrix = [
[2, 8, 7, 6],
[10, 10, 4, 2],
[5, 9, 2, 3]
]
print(solve(matrix))输入
[ [2, 8, 7, 6], [10, 10, 4, 2], [5, 9, 2, 3] ]输出结果
26