用于查找我们可以从 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