zoukankan      html  css  js  c++  java
  • LeetCode 120 三角形最小路径(方法二)

    class Solution {
    public:
        //int dp[1000][1000];
        int minimumTotal(vector<vector<int>>& triangle) {
             //基本思想,动态规划,思路自顶向下,或自底向上,
             //再考虑自底向上,用dp[i][j]二维数组维护,到达每个节点的最短路径
             //基本动态转移方程triangle[i][j]=triangle[i][j]+min(dp[i+1][j],triangle[i+1][j+1])
            //即从倒数第二行开始,将每个行的数据改为当前行到下一行的最短距离,一直到三角形顶点总的来说就说就是
            //自底向上的dp思想
            int len=triangle.size();
            for(int i=len-2;i>=0;--i){
                for(int j=0;j<triangle[i].size();++j)
                triangle[i][j]=min(triangle[i+1][j],triangle[i+1][j+1])+triangle[i][j];
            }
            return triangle[0][0];
        }
    
    };
    

    通过与方法一的比较我们能明显的看出此方法的优点,无论是在时间还是空间上,感觉解决动态规划一类问题的关键是,如何确定动态转移方程,实现由实际问题向数学问题的转变。感觉就是要多练吧,增加思维的广度

  • 相关阅读:
    css选择器
    有关cookies与session的详细信息
    06OC之内存管理
    04OC之分类Category,协议Protocol,Copy,代码块block
    IOS学习目录
    03OC的类的补充
    02OC的类和对象
    02第一个OC程序
    01OC概述
    02快速学习ExtJs之---第一个HelloWord!
  • 原文地址:https://www.cnblogs.com/zzw-/p/13259963.html
Copyright © 2011-2022 走看看