码迷,mamicode.com
首页 > 其他好文 > 详细

110 最小路径和

时间:2018-06-04 16:29:21      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:app   ant   时间   cti   inf   路径   content   The   初始化   

原题网址:https://www.lintcode.com/problem/minimum-path-sum/description

描述

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

你在同一时间只能向下或者向右移动一步

标签
动态规划(DP)
 
思路:同数字三角形,创建动态规划数组dp【m】【n】,dp【i】【j】表示从左上角出发到达终点grid【i】【j】的最小路径和。
状态转移方程:dp【i】【j】= min(dp【i-1】【j】,dp【i】【j-1】)+ grid【i】【j】;
为计算方便,第一行和第一列可以单独初始化。
最后 return dp【m-1】【n-1】。
 
AC代码:
class Solution {
public:
    /**
     * @param grid: a list of lists of integers
     * @return: An integer, minimizes the sum of all numbers along its path
     */
    int minPathSum(vector<vector<int>> &grid) {
        // write your code here
        int row=grid.size();
    if (row==0)
    {
        return 0;
    }
    int col=grid[0].size();
    vector<vector<int>> dp(row,vector<int>(col,0));
    dp[0][0]=grid[0][0];
    for (int i=1;i<row;i++)//第一列;
    {
        dp[i][0]=dp[i-1][0]+grid[i][0];
    }
    for (int j=1;j<col;j++)//第一行;
    {
        dp[0][j]=dp[0][j-1]+grid[0][j];
    }

    for (int i=1;i<row;i++)
    {
        for (int j=1;j<col;j++)
        {
            dp[i][j]=min(dp[i][j-1],dp[i-1][j])+grid[i][j];
        }
    }
    return dp[row-1][col-1];
    }
};

 

110 最小路径和

标签:app   ant   时间   cti   inf   路径   content   The   初始化   

原文地址:https://www.cnblogs.com/Tang-tangt/p/9133246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!