算法作业_28(2017.6.8第十六周)

来源:互联网 发布:正装皮鞋推荐 知乎 编辑:程序博客网 时间:2024/06/05 03:38

64. 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第一行和第一列需要单独处理:

class Solution {public:    int minPathSum(vector<vector<int>>& grid) {        int m = grid.size();        if(m == 0 ){return 0;}        int n = grid[0].size();        if(n == 0 ) {return 0;}                               vector<vector<int>> res(m,vector<int>(n));        //diyilie        res[0][0] = grid[0][0];        for(int i =1;i<n;i++){            res[0][i] = grid[0][i] + res[0][i-1];                    }        //diyihang        for(int i =1;i<m;i++){            res[i][0] = grid[i][0] + res[i-1][0];                    }                for(int i = 1 ; i<m;i++){            for(int j = 1;j<n;j++){                res[i][j] = grid[i][j] + min(res[i][j-1],res[i-1][j]);            }        }        return res[m-1][n-1];                    }};


原创粉丝点击