174. 地下城游戏

174. 地下城游戏

思路

逆向思维。

cpp 复制代码
class Solution {
public:
    int calculateMinimumHP(vector<vector<int>>& dungeon) {
        // 逆向思维。
        // 这就是,我要进行的是
        int n = dungeon.size();
        int m = dungeon[0].size();
        vector<vector<int>> dp(n, vector<int>(m, 0));
        dp[n-1][m-1] = 0;
        for(int i = n-1;i>=0;i--){
            for(int j = m-1;j>=0;j--){
                if(i == n-1 and j == m-1){
                    dp[i][j] = max(1,1-dungeon[i][j]);
                }else if(i == n-1){
                    dp[i][j] = max(1,dp[i][j+1]-dungeon[i][j]);
                }else if(j == m-1){
                    dp[i][j] = max(1, dp[i+1][j]-dungeon[i][j]);
                }else{
                    dp[i][j] = max(min(dp[i+1][j], dp[i][j+1])-dungeon[i][j], 1);
                }
            }
        }
        return dp[0][0];
    }
};
相关推荐
CHANG_THE_WORLD10 分钟前
模拟解析:宽度数组 `[1,2,1]`,10个条目的 XRef 流
java·前端·算法
lixinnnn.14 分钟前
多源BFS:矩阵距离
算法·宽度优先
CHANG_THE_WORLD18 分钟前
PDFium 处理通用 `W` 数组的方式
数据结构·算法
lixinnnn.36 分钟前
多源BFS:刺杀大使
算法·宽度优先
AI成长日志1 小时前
【笔面试算法学习专栏】堆与优先队列实战:力扣hot100之215.数组中的第K个最大元素、347.前K个高频元素
学习·算法·leetcode
北顾笙9801 小时前
day18-数据结构力扣
数据结构·算法·leetcode
阿Y加油吧1 小时前
LeetCode 中等难度 | 回溯法进阶题解:单词搜索 & 分割回文串
算法·leetcode·职场和发展
QH_ShareHub1 小时前
反正态分布算法
算法
王老师青少年编程2 小时前
csp信奥赛c++中的递归和递推研究
c++·算法·递归·递推·csp·信奥赛
Bczheng12 小时前
五.serialize.h中的CDataStream类
算法·哈希算法