Leetcode 3418. Maximum Amount of Money Robot Can Earn

  • [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。

相关推荐
参.商.8 小时前
【Day41】143. 重排链表
leetcode·golang
Zaly.11 小时前
【Python刷题】LeetCode 1727 重新排列后的最大子矩阵
算法·leetcode·矩阵
memcpy014 小时前
LeetCode 1456. 定长子串中元音的最大数目【定长滑窗模板题】中等
算法·leetcode·职场和发展
liuyao_xianhui14 小时前
优选算法_模拟_提莫攻击_C++
开发语言·c++·算法·动态规划·哈希算法·散列表
玛丽莲茼蒿14 小时前
LeetCode hot100【相交链表】【简单】
算法·leetcode·职场和发展
wen__xvn14 小时前
力扣模拟题刷题
算法·leetcode
不要秃头的小孩14 小时前
力扣刷题——111.二叉树的最小深度
数据结构·python·算法·leetcode
We་ct15 小时前
LeetCode 35. 搜索插入位置:二分查找的经典应用
前端·算法·leetcode·typescript·个人开发
Navigator_Z16 小时前
LeetCode //C - 990. Satisfiability of Equality Equations
c语言·算法·leetcode
lightqjx17 小时前
【算法】前缀和
c++·算法·leetcode·前缀和