leetcode 174 Dungeon Game

https://www.cnblogs.com/grandyang/p/4233035.html

dp[i][j]表示当前位置的最小起始血量;从右下往左上推。

class Solution {
public:
    int calculateMinimumHP(vector<vector<int>>& dungeon) {
        int m=dungeon.size(),n=dungeon[0].size();
        vector<vector<int>> dp(m+1,vector<int>(n+1,INT_MAX));
        dp[m][n-1]=dp[m-1][n]=1;
        for(int i=m-1;i>=0;--i) {
            for(int j=n-1;j>=0;--j) {
                dp[i][j]=max(1,min(dp[i+1][j],dp[i][j+1])-dungeon[i][j]);
            }
        }
        return dp[0][0];
    }
};

 

posted @ 2020-05-06 10:02  qiujiejie  阅读(103)  评论(0编辑  收藏  举报