Minimum Path Sum

来源:互联网 发布:易语言登录器源码 编辑:程序博客网 时间:2024/06/03 11:34

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.


典型的动态规划,当前一个格子(假设坐标为i,j)的结果依赖于左边(i, j - 1)和上边(i-1, j)两个之前计算过的格子. 
逐行遍历格子,最后得到最右下角的格子的值就是返回值。


--------------
class Solution {public:    int minPathSum(vector<vector<int> > &grid) {        int rows = grid.size();        int cols = grid[0].size();        vector<vector<int>> ret(2, vector<int>(cols + 1, INT_MAX));        int pre = 0, cur = 1;        ret[0][1] = 0;        for (int i = 0; i < rows; i++) {            for (int j = 1; j <= cols; j++) {                ret[cur][j] = min(ret[cur][j - 1], ret[pre][j]) + grid[i][j - 1];            }            swap(pre, cur);        }                return ret[pre][cols];    }};


0 0
原创粉丝点击