目录
(2)方法二:将所有值全部初始化为正无穷大,dp[0][1]和dp[1][0]初始化为0
一、题目
二、代码
(1)方法一:先初始化第一行,第一列
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int row=grid.size();
int col=grid[0].size();
vector<vector<int>>dp(row,vector<int>(col,grid[0][0]));
for(int i=1;i<row;i++)//初始化第一列
dp[i][0]=dp[i-1][0]+grid[i][0];
for(int j=1;j<col;j++)//初始化第一列
dp[0][j]=dp[0][j-1]+grid[0][j];
for(int i=1;i<row;i++)
{
for(int j=1;j<col;j++)
dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i][j];
}
return dp[row-1][col-1];
}
};
(2)方法二:将所有值全部初始化为正无穷大,dp[0][1]和dp[1][0]初始化为0
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int row=grid.size();
int col=grid[0].size();
vector<vector<int>>dp(row+1,vector<int>(col+1,INT_MAX));
dp[0][1]=dp[1][0]=0;
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i-1][j-1];
}
return dp[row][col];
}
};