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

    class Solution {
    public:
        int dp[1000][1000];
        int minimumTotal(vector<vector<int>>& triangle) {
             //基本思想,动态规划,思路自顶向下,或自底向上,
             //先考虑自顶向下,用dp[i][j]二维数组维护,到达每个节点的最短路径,dp[i][j]=min(dp[i-1][j-1]
             //,dp[i-1][j])+triangle[i][j])
             //返回最后一行元素的最小值
             //int **dp=new int*[1000];//用来保存到第i行的最小路径
             dp[0][0]=triangle[0][0];
             int len=triangle.size();
             for(int i=1;i<len;++i){
                 for(int j=0;j<triangle[i].size();++j){
                     if(j==0){
                         dp[i][j]=dp[i-1][j]+triangle[i][j];
                     }
                     else if(j==triangle[i].size()-1){
                         dp[i][j]=dp[i-1][j-1]+triangle[i][j];
                     }
                     else{
                         dp[i][j]=min(dp[i-1][j],dp[i-1][j-1])+triangle[i][j];
                     }
                 }
             }
             int minus=0xffffff;
             for(int j=0;j<triangle[len-1].size();++j){
                // printf("%d ",dp[len-1][j] );
                  minus=min(minus,dp[len-1][j]);
             }
             return minus;
        }
    
    };
    

      缺点:空间复杂度较高,但是针对此问题还可以对空间复杂度进行改进。另外,对于dp不仅可以使用全局变量保存(优点,均初始化为0,缺点存在浪费),也可以动态开辟数组,另外还可以使用vector模板,但个人认为后两者的时间效率不如前者。

  • 相关阅读:
    ASP.NET MVC 动态加载图像
    ASP.NET:以域用户身份访问网络资源
    ASP.NET MVC 动态加载 *.ascx
    4月
    3月
    2月
    每天充点小能量
    每天进步一点点
    FreeMarker标签与使用
    eclipse启动tomcat, http://localhost:8080无法访问
  • 原文地址:https://www.cnblogs.com/zzw-/p/13259866.html
Copyright © 2011-2022 走看看