[LeetCode]Minimum Path Sum
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
思考:DP方程:dp[i][j]=grid[i][j]+min(dp[i-1][j],dp[i][j-1])。
class Solution {
public:
int minPathSum(vector<vector<int> > &grid) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int m=grid.size();
int n=grid[0].size();
int i,j,ret=0;
int **dp=new int*[m];
for(i=0;i<m;i++)
{
dp[i]=new int[n];
memset(dp[i],0,sizeof(int)*n);
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(i==0&&j==0) dp[i][j]=grid[i][j];
else if(i==0) dp[i][j]=grid[i][j]+dp[i][j-1];
else if(j==0) dp[i][j]=grid[i][j]+dp[i-1][j];
else dp[i][j]=grid[i][j]+min(dp[i-1][j],dp[i][j-1]);
}
}
ret=dp[m-1][n-1];
for(i=0;i<m;i++)
delete []dp[i];
delete []dp;
return ret;
}
};

浙公网安备 33010602011771号