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.
Example:
Input: [ [1,3,1], [1,5,1], [4,2,1] ] Output: 7 Explanation: Because the path 1→3→1→1→1 minimizes the sum.
int minPathSum(int** grid, int gridRowSize, int gridColSize) {
int i,j,k;
int path[gridRowSize][gridColSize];
path[0][0]=grid[0][0];
if(gridRowSize==1)
{
int sum=0;
for(j=0;j<gridColSize;j++)
sum+=grid[0][j];
return sum;
}
if(gridColSize==1)
{
int sum=0;
for(j=0;j<gridRowSize;j++)
sum+=grid[j][0];
return sum;
}
for(i=1;i<gridRowSize;i++)
{
path[i][0]=grid[i][0]+path[i-1][0];
for(j=1;j<gridColSize;j++)
{
path[0][j]=path[0][j-1]+grid[0][j];
path[i][j]=path[i-1][j]<path[i][j-1]?path[i-1][j]+grid[i][j]:path[i][j-1]+grid[i][j];
}
}
return path[gridRowSize-1][gridColSize-1];
}