1,题目描述
2,题目分析
f(m,n)表示到达m,n位置所需的最短路径,而到达该位置有两种方法:经过(m-1,n)和经过(m,n-1),因此状态方程可写为:
f(m,n)=min(f(m-1,n), f(m,n-1)) + grid[m,n]
3,代码实现
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int n= grid[0].size();
int m= grid.size();
//cout<<m<<","<<n<<endl;
for(int i=1;i<n;i++) grid[0][i]=grid[0][i-1]+ grid[0][i];
for(int i=1;i<m;i++) grid[i][0]=grid[i-1][0]+ grid[i][0];
for(int i=1;i<m;i++)
{
for(int j=1;j<n;j++)
{
grid[i][j]=min(grid[i-1][j]+grid[i][j],grid[i][j-1]+grid[i][j]) ;
}
}
return grid[m-1][n-1];
}
};