原题题目
代码实现(首刷部分看解部分自解)
class Solution {
public:
int calculateMinimumHP(vector<vector<int>>& dungeon) {
int rows = dungeon.size(),lines = dungeon[0].size(),i,j;
vector<vector<int>> dp(rows,vector<int>(lines,0));
for(i=rows-1;i>=0;i--)
{
for(j=lines-1;j>=0;j--)
{
if(i == rows-1 && j==lines-1) dp[i][j] = fmin(dp[i][j],dungeon[i][j]);
else if(i == rows-1) dp[i][j] = fmin(dp[i][j],dp[i][j+1] + dungeon[i][j]);
else if(j == lines-1) dp[i][j] = fmin(dp[i][j],dp[i+1][j] + dungeon[i][j]);
else dp[i][j] = fmin(dp[i][j],fmax(dp[i+1][j],dp[i][j+1])+dungeon[i][j]);
}
}
return abs(dp[0][0])+1;
}
};