zoukankan      html  css  js  c++  java
  • 最短的路径和

    #include <iostream>

    #include <vector>
    using namespace std;
    
    
    /***
     * 问题:求一个矩形数组的从最左上到最右下的距离总和
     * 特点:每个格子元素代表的距离要使它们相加的和最小
     * 地图:
     * [1,3,1],
     * [1,5,1],
     * [4,2,1]
     *难点:如果按题目要求从最右开始会发现一开始选择最短的路径到最后可能就不是了
     * 相当于贪心算法了------>而与贪心对应的则是动态规划
     * 动态规划的穷举加记忆化---->因此我们改变数组的元素的含义让他们表示到达终点的最短距离
     * 因此从离终点最近的点开始,以后的每个点的决策都1取决于上一个点的结果
     * [7,6,3],
     * [8,7,2],
     * [7,3,1]
     * 从而退出了从最左上到最右下的最短距离
    */
    
    
    class Solution
    {
    private:
    
    
    public:
        int minPathSum(vector<vector<int>>& grid) {
               int n = grid.size();
               int m = grid[0].size();
               for(int i=1;i<m;i++)
               {
                   grid[0][i] += grid[0][i-1];     //是什么就定义什么,要求什么就表示什么
    
    
               }
               for(int i=1;i<n;i++)
               {
                   grid[i][0] += grid[i-1][0];     //将边的路径求出来
               }
               for(int i=1;i<n;i++)                //第一个点作为起点不好求就换成第二个
               {
                   for(int j=1;j<m;j++)
                   {
                       grid[i][j]+=min(grid[i-1][j],grid[i][j-1]);
                   }
               }
               return grid[n-1][m-1];
           }
    };
    
    
    
    
  • 相关阅读:
    HDOJ 3547 DIY Cube 解题报告
    一些经典的期望问题

    人生
    BZOJ 4341 [CF253 Printer] 解题报告
    BZOJ 4302 Buildings 解题报告
    OI 回忆录
    PyQt实现测试工具
    PyQt:eg4
    pyQt: eg3
  • 原文地址:https://www.cnblogs.com/z2529827226/p/11728954.html
Copyright © 2011-2022 走看看