zoukankan      html  css  js  c++  java
  • Minimum Path Sum

    题目链接

    Minimum Path Sum - LeetCode

    注意点

    • 数字很大,结果可能会溢出

    解法

    解法一:dp,走到某一格的位置dp值等于它左边和上面格子中较小的dp值加上该位置的值。其实只需要一个一维数组也可以实现。时间复杂度O(mn)

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

    小结

    • 动态规划题
  • 相关阅读:
    NFS服务安装
    Redhat 6.3 yum 本地源配置
    在redhat enterprise linux 6中部署samba
    React
    链表
    map, set
    二叉查找树
    数制间的相互转换
    二维数组
    拖拽
  • 原文地址:https://www.cnblogs.com/multhree/p/10459016.html
Copyright © 2011-2022 走看看