【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题意:
给出一个全是非负整数的二维矩阵,从左上角走到右下角,只能往下或者往右行走,路径的价值是路径里所有的数字之和,输出最小的路径价值
思路:
对于坐标(i,j),我们只需要找上方与左边最小的路径值加上该位置的路径值即可
状态转移方程dp[i][j] = min(dp[i-1][j],dp[i][j-1])+a[i][j];
class Solution
{
public:
int minPathSum(vector<vector<int>>& a)
{
int n = a.size(),m = a[0].size();
int i,j;
vector<vector<int> > dp;
dp.resize(n+1);
for(i = 0; i<=n; i++)
dp[i].resize(m+1);
dp[0][0] = a[0][0];
for(i = 0; i<n; i++)
{
for(j = 0; j<m; j++)
{
if(i==0&&j==0) continue;
if(i==0)
{
dp[i][j] = dp[i][j-1]+a[i][j];
continue;
}
if(j==0)
{
dp[i][j] = dp[i-1][j]+a[i][j];
continue;
}
dp[i][j] = min(dp[i-1][j],dp[i][j-1])+a[i][j];
}
}
return dp[n-1][m-1];
}
};