欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

174.地下城游戏

最编程 2024-05-07 20:17:38
...
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]; } };