zoukankan      html  css  js  c++  java
  • Triangle --- 至顶向下求最小值

    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).

    典型的球最短路径的问题,需要使用动态规划的思想,从上到下依次求每个点的最小距离 

    int minimumTotal(vector<vector<int> > &triangle) {
            int nSize = triangle.size();
            if (nSize<1)
                return 0;
            vector<int> sums(nSize);
            vector<int> tmps(nSize);
        
            sums[0] = triangle[0][0];
            for (int  i = 1;  i < nSize;  i++)
            {
                vector<int> vals = triangle[i];
                int nNum = vals.size();
        
                 tmps = sums;
                sums[0] = tmps[0] + vals[0];
                for (int j=1; j<i; j++)
                {
                    sums[j] = tmps[j-1]>tmps[j]?tmps[j]+vals[j]:tmps[j-1]+vals[j];
                }
        
                sums[i] = tmps[i-1]+vals[i];
            }
        
            int nMin = sums[0];
            for (int i = 1; i < nSize; i++)
            {
                if (sums[i] < nMin)
                    nMin = sums[i];
            }
        
            return nMin;
        }
  • 相关阅读:
    Redis 分布式锁
    Angular VS Blzaor
    Chorme 跨域的快捷解决
    旋转3角形
    .Netcore AD 操作
    .Netcore 2.2 和3.1 的模板
    Command3
    CSS Selector
    弹性盒子
    Label_strange_labels
  • 原文地址:https://www.cnblogs.com/zhhwgis/p/3959519.html
Copyright © 2011-2022 走看看