zoukankan      html  css  js  c++  java
  • 120. Triangle

    问题:三角形,从顶到底最小路径

    解法类型:DP动态规划

    思路:

    最原始思路:穷举每一行每个点的最小路径值,下一行=上一行累计,形成2维数组(n*n),再从数组最后一行选取最小值。

    进化思路:每行计算,只需要上一行的结果,则只需要2维数组(2*n)两行保存数据即可。

    再进化思路:如何化为只需要1维数组,则需计算值不覆盖接下来要计算的值,即从后往前计算。(原来从顶到底->从底到顶)

          每个点的路径 = 本点值 + 下一行的两个中最小的                 dp[j] = triangle[i][j] + min(dp[j], dp[j+1]);

    代码参考:

     1 class Solution {
     2 public:
     3     int minimumTotal(vector<vector<int>>& triangle) {
     4         vector<int> dp(triangle[triangle.size()-1]);
     5         int i, j;
     6         for(i=triangle.size()-2; i>=0; i--){
     7             for(j=0; j<triangle[i].size(); j++){
     8                 dp[j] = triangle[i][j] + min(dp[j], dp[j+1]);
     9             }
    10         }
    11         return dp[0];
    12     }
    13 };
  • 相关阅读:
    前端 CSS 与HTML 学习笔记详细讲解
    Python-Django之DRF
    Flask
    flask
    Python
    Python爬虫
    前端开发规范
    为什么 [] == ![] 输出是true?
    javascript准确判断各种数据类型
    JavaScript数组扁平化常用方法总结
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/12316773.html
Copyright © 2011-2022 走看看