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

    Minimum Path Sum : https://leetcode.com/problems/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.


    解析:
    本题是一个动态规划类型的题目,
    求 grid[0][0] 到 grid[rows-1][cols-1]的最小路径和
    设m[i][j]表示从grid[0][0]到grid[i][j]的最小路径和,那么

    • m[0][0] = grid[0][0];
    • m[0][j] = m[0][j-1] + grid[0][j];
    • m[i][0] = m[i-1][0] + grid[i][0];
    • m[i][j] = min(m[i-1][j], m[i][j-1]) + gird[i][j];

    由上述条件等式,easy写出动态规划的程序:

    class Solution {
    public:
        int minPathSum(vector<vector<int>>& grid) {
            int rows = grid.size();
            int cols = grid[0].size();
            int result = 0;
            if (rows == 0 || cols == 0)
                return 0;
            int** m = new int*[rows];
            for (int i = 0;i < rows; i++)
                m[i] = new int[cols];
            // 动态规划。从小问题迭代求解  
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    if (i == 0 && j == 0) {
                        m[i][j] = grid[i][j];
                    } else if (i == 0) {
                        m[i][j] = m[i][j-1] + grid[i][j];
                    } else if (j == 0) {
                        m[i][j] = m[i-1][j] + grid[i][j];
                    } else {
                        m[i][j] = min(m[i-1][j], m[i][j-1]) + grid[i][j];
                    }
                }
            }
            result = m[rows-1][cols-1];
            for (int i = 0; i < rows; i++)
                delete m[i];
            delete m;
            m = NULL;
            return result;
        }
    };
  • 相关阅读:
    C# String.Format格式说明
    jQuery.json.js
    禁止别人使用"另存为"保存你的网页
    组合问题的递归算法
    jQuery,contents()
    C#string,StringBuilder和Regex类的讲解
    jQuery性能优化指南
    加密算法的C#实现
    m,n组合算法
    jQuery插件—获取URL参数
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7375397.html
Copyright © 2011-2022 走看看