zoukankan      html  css  js  c++  java
  • LeetCode-Triangle[dp]

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

    For example, given the following triangle

    [
         [2],
        [3,4],
       [6,5,7],
      [4,1,8,3]
    ]
    

    The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

    Note:
    Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.

    思路:动态规划,设发f[i,j]表示从位置(i,j)出发到达三角形底部的最小路径和,所以状态转移方程有:

    f[i,j]=min(f[i+1,j],f[i+1,j+1])    (i<size-1&&i>=0,j<i+1);

    参考代码:

     1 public class Solution {
     2     public static int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
     3         int trianlgesize=triangle.size();
     4         int dp[][]=new int[trianlgesize][trianlgesize];
     5         for(int i=0;i<triangle.get(trianlgesize-1).size();i++){
     6             dp[trianlgesize-1][i]=triangle.get(trianlgesize).get(i);
     7         }
     8         for(int i=trianlgesize-2;i>=0;i--){
     9             for(int j=0;j<i+1;j++){
    10                 dp[i][j]=Math.min(dp[i+1][j], dp[i+1][j+1])+triangle.get(i).get(j);
    11             }
    12         }
    13         return dp[0][0];
    14     }
    15 }
  • 相关阅读:
    qt中使用C++thread
    qt--mask蒙版
    qt--调色板QPalette
    qt--Q_PROPERTY自定义属性
    路由扩张器
    qt-QBitmap单色图
    qt-QPixmap
    nodejs中的文件系统
    深入理解nodejs中的异步编程
    Vue 事件监听
  • 原文地址:https://www.cnblogs.com/xiaolu266/p/7140759.html
Copyright © 2011-2022 走看看