LeetCode64. Minimum Path Sum题解

来源:互联网 发布:php程序 编辑:程序博客网 时间:2024/05/29 19:10

题目描述:
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.

大意就是给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。

思路:
题目也提示了,每次只能向右或者向下走。而第一行没什么选择了,从第二个数开始,只能被左边的数所选择。所以第一行的每个数加上左边的数。第一列同理,加上上面的数。
对于不在第一行或者第一列来说,就要选择加上面或者左面小的数。
代码如下:

int minPathSum(int** grid, int gridRowSize, int gridColSize) {    int min(int a,int b)    {        if(a < b)            return a;        else            return b;    }    int f[1000][1000];    if (gridRowSize == 0 || gridColSize == 0)            return 0;    f[0][0] = grid[0][0];    for(int i = 1; i < gridRowSize; i++)        f[i][0] = f[i-1][0] + grid[i][0];    for(int i = 1; i < gridColSize; i++)        f[0][i] = f[0][i-1] + grid[0][i];    for(int i = 1; i < gridRowSize; i++)        for(int j = 1; j < gridColSize; j++)            f[i][j] = min(f[i-1][j], f[i][j-1]) + grid[i][j];    return f[gridRowSize-1][gridColSize-1];}
原创粉丝点击