- [Leetcode 3418. Maximum Amount of Money Robot Can Earn](#Leetcode 3418. Maximum Amount of Money Robot Can Earn)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题我的思路比较暴力,就是一个动态规划,本质上就是全量遍历,然后找到最优路径。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def maximumAmount(self, coins: List[List[int]]) -> int:
n, m = len(coins), len(coins[0])
@lru_cache(None)
def dp(i, j, k):
if i == n-1 and j == m-1:
return coins[i][j] if (coins[i][j] >= 0 or k == 0) else 0
ans = -math.inf
if coins[i][j] >= 0 or k == 0:
if i+1 < n:
ans = max(ans, coins[i][j] + dp(i+1, j, k))
if j+1 < m:
ans = max(ans, coins[i][j] + dp(i, j+1, k))
else:
if i+1 < n:
ans = max(ans, coins[i][j] + dp(i+1, j, k), dp(i+1, j, k-1))
if j+1 < m:
ans = max(ans, coins[i][j] + dp(i, j+1, k), dp(i, j+1, k-1))
return ans
return dp(0, 0, 2)
提交代码评测得到:耗时4833ms,占用内存576.6MB。