最小路径和
class Solution {
public:int minPathSum(vector<vector<int>>& grid) {int m = grid.size(),n = grid[0].size();vector<vector<int>> dp(m+1,vector<int>(n+1,INT_MAX));dp[0][1] = dp[1][0] = 0;for(int i = 1; i <= m; i++)for(int j = 1; j <= n; j++)dp[i][j] = min(dp[i-1][j],dp[i][j-1]) + grid[i-1][j-1];return dp[m][n];}
};
地下城游戏
分析:
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] = 1;for(int i = m-1; i >= 0; i--)for(int j = n-1; j >= 0; j--){dp[i][j] = min(dp[i+1][j],dp[i][j+1]) - dungeon[i][j];dp[i][j] = max(1,dp[i][j]);}return dp[0][0];}
};