LC 3276. 选择矩阵中单元格的最大得分
https://leetcode.cn/problems/select-cells-in-grid-with-maximum-score/description/
这题一个关键是怎么进行探索,为了保证不重复的话,我们可以按照每个单元格值从小到大进行搜索,这样的话就会比较简单。
class Solution:
def maxScore(self, grid: List[List[int]]) -> int:
n, m = len(grid), len(grid[0])
import functools
@functools.cache
def dfs(st, M):
if st == (1 << n) - 1: return 0
ans = 0
for i in range(n):
if st & (1 << i) == 0:
for j in range(m):
if grid[i][j] > M:
r = dfs(st | (1 << i), grid[i][j])
ans = max(r + grid[i][j], ans)
return ans
ans = dfs(0, 0)
return ans