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.

 

int min(int left, int right){
    return (left - right) > 0 ? right : left;
}
int minPathSum(int** grid, int gridRowSize, int gridColSize) {
    //memorize a 2D array to save the miminum
    //initialize the first row and col
    for(int i = 1; i < gridRowSize; i++){
        grid[i][0] += grid[i - 1][0];
    }
    for(int i = 1; i < gridColSize; i++){
        grid[0][i] += grid[0][i - 1];
    }
    // every num will be the sum of minor between up point and left point with this point
    for(int i = 1; i < gridRowSize; i++){
        for(int j = 1; j < gridColSize; j++){
            grid[i][j] += min(grid[i][j - 1], grid[i - 1][j]);
        }
    }
    return grid[gridRowSize - 1][gridColSize - 1];
}
posted @ 2016-01-10 15:10  dylqt  阅读(144)  评论(0编辑  收藏  举报