1. 程式人生 > >動態規劃練習一 21:三角形最佳路徑問題

動態規劃練習一 21:三角形最佳路徑問題

描述

如下所示的由正整數數字構成的三角形: 

3 8 
8 1 0 
2 7 4 4 
4 5 2 6 5 

從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到一個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的數字之和。 
注意:路徑上的每一步只能從一個數走到下一層上和它最近的下邊(正下方)的數或者右邊(右下方)的數。

輸入 第一行為三角形高度100>=h>=1,同時也是最底層邊的數字的數目。
從第二行開始,每行為三角形相應行的數字,中間用空格分隔。 輸出 最佳路徑的長度數值。 樣例輸入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
或
1
8
樣例輸出
30
或
8

          這道題為一道遞推問題,因為一個數需要加上正下方跟右下方數的最大值,所以要倒著推,第一個值即為最大值總和。

原始碼如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{  int n,a[101][101],i,j;
   cin>>n;
    for(i=0;i<n;++i)
     for(j=0;j<=i;++j)
     cin>>a[i][j];
    for(i=n-1;i>=0;--i)
     for(j=0;j<=i;++j)
     { if(a[i][j]>a[i][j+1])a[i-1][j]+=a[i][j];
      else a[i-1][j]+=a[i][j+1];
}
cout<<a[0][0]<<endl;

相關推薦

動態規劃練習 21:三角形最佳路徑問題

描述 如下所示的由正整數數字構成的三角形:  7  3 8  8 1 0  2 7 4 4  4 5 2 6 5  從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到一個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的數字之和

動態規劃練習 三角形最佳路徑問題

描述 如下所示的由正整數數字構成的三角形: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到一個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的數字之和。

動態規劃練習--21(三角形最佳路徑問題)

題目描述: 描述 如下所示的由正整數數字構成的三角形:  7  3 8  8 1 0  2 7 4 4  4 5 2 6 5  從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到一個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑

動態規劃練習21:三角形最佳路徑問題

題目簡要: 描述 如下所示的由正整數數字構成的三角形: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到一個和,和最大的路徑稱為最佳路徑。你的任務就是求出最佳路徑上的

動態規劃練習 24:鳴人的影分身

描述 在火影忍者的世界裡,令敵人捉摸不透是非常關鍵的。我們的主角漩渦鳴人所擁有的一個招數——多重影分身之術——就是一個很好的例子。 影分身是由鳴人身體的查克拉能量製造的,使用的查克拉越多,製造出的影分身越強。 針對不同的作戰情況,鳴人可以選擇製造出各種強度的影分身,有的用

NOI 2.6 動態規劃 7625:三角形最佳路徑問題

題目來源:http://noi.openjudge.cn/ch0206/7625/7625:三角形最佳路徑問題總時間限制: 1000ms    記憶體限制: 65536kB描述如下所示的由正整數數字構成的三角形: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 從

算法學習——動態規劃之點數值三角形的最小路徑

頂點 結果 等於 system.in lag -- 技術分享 4行 info 算法描述 在一個n行的點數值三角形中,尋找從頂點開始每一步可沿著左斜或者右斜向下直到到達底端,使得每個點上的數值之和為最小 右圖為一個4行的點數值三角形 算法思路 接收用戶輸入行數n 使用

演算法練習(1)動態規劃:買賣股票的最佳時機1

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出

深度學習高手該怎樣煉成?這位拿下阿里天池大賽冠軍的中科院博士為你規劃份專業成長路徑

作者 | 劉昕 責編 | 胡永波 深度學習本質上是深層的人工神經網路,它不是一項孤立的技術,而是數學、統計機器學習、電腦科學和人工神經網路等多個領域的綜合。深度學習的理解,離不開本科數學中最為基礎的數學分析(高等數學)、線性代數、概率論和凸優化;深度

演算法設計與分析——動態規劃)矩陣連乘

動態規劃——Dynamic programming,可以說是本人一直沒有啃下的骨頭,這次我就得好好來學學Dynamic programming. OK,出發! 動態規劃通常是分治演算法的一種特殊情況,它一般用於最優化問題,如果這些問題能夠: 1.能夠分解為規模更小的子問題 2.遞迴的

蘇蘇醬陪你學動態規劃)——股票買賣

1、問題描述      給你一串數字,表示每天的股票價格,你在某一天買進,並在未來的某一天賣出,請求出最大的利潤值。      例:      1,2,6,4,3     &

動態規劃練習——UVa10003——區間dp

題目連結:https://vjudge.net/contest/232313#problem/I 紫書上的動態規劃例題,很明顯是一個區間線性規劃的問題,想起之前做過的矩陣鏈乘,這題和它很像,列舉方向都是向j-i遞增的 方向,這裡有個大神的區間dp模板的總結:http://www.cnblog

leetcode與資料結構---動態規劃總結()

這幾天一直在做leetcode上關於動態規劃方面的題目,雖然大二下的演算法設計課上較為詳細的講過動態規劃,奈何遇到新穎的題目或者稍加背景的題目立刻就原形畢露不知題目所云了。動態規劃算是較難的一個專題了,但只要找到遞推關係其最終的程式碼又相當簡便。現在把這幾天做過的題目整理總結一下,畢竟只求做

動態規劃問題:揹包問題

學習自:Christal_R 有一個揹包,能盛放的物品總重量為capacity,設有number件物品,其重量分別為w1,w2,…,wn,希看從N件物品中選擇若干物品,所選物品的重量之和恰能放進該揹包,即所選物品的重量之和即是S。 尋找遞推關係式,面對當前商品有兩種可能性: 第一,包的

LeetCode-【動態規劃】- 和零

在計算機界中,我們總是追求用有限的資源獲取最大的收益。 現在,假設你分別支配著 m 個 0 和 n 個 1。另外,還有一個僅包含 0 和 1 字串的陣列。 你的任務是使用給定的 m 個 0 和 n 

#132-(EZOI動態規劃練習)[動態規劃]單詞的劃分

Description 有一個很長的由小寫字母組成的字串。為了便於對這個字串進行分析,需要將它劃分成若干部分,每部分稱為一個單詞。出於減少分析量的目的,希望劃分出的單詞數越少越好。 Input 第

leetcode——動態規劃):最大子序和

動態規劃是一種非常重要的演算法思想,畢竟是一種思想,所以在邏輯層面的體現並沒有一個固定的形式,但是處理問題的方式卻都是本著一個原則:將一個問題遞迴分解為它的子問題進行求解,也許有人會問:這不是分治的思想嘛?因為問題分解的過程中往往會產生很多重複的子問題,這個時候動態規劃和分支

總算是過了動態規劃關了

自從開始學演算法,動態規劃就一直是我心中的一道陰影。也怪了,這個演算法的原理我看明白了,可總是寫不出程式來。具體地說,是0/1揹包問題 讓我感到頭痛。 這次又碰到了0/1揹包問題,想自己摸索出演算法來,結果想了兩天,也沒想出來(看來當時對原理理解的還是不深)。因為在我的思

DP動態規劃專題 :LeetCode 91. Decode Ways

LeetCode 91. Decode Ways A message containing letters from A-Z is being encoded to numbers using the following mapping: ‘A’ -> 1 ‘B’ ->

【經典動態規劃問題】矩陣最小路徑和問題

題目內容: 有一個矩陣map,它每個格子有一個權值。從左上角的格子開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和。 給定一個矩陣map及它的行數n和列數m,請返回最小路徑和。保證行列數均小於等於100. 測試樣例: