動態規劃系列一(數塔問題)

2021-06-19 04:13:24 字數 738 閱讀 8420

有形如下圖所示的數塔,從頂部出發,在每一結點可以選擇向左走或是向右走,一直走到底層,要求找出一條路徑,使路徑上的值最大

input

輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n(1 <= n <= 100),

表示數塔的高度,接下來用n行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間[0,99]內

output

對於每個測試例項,輸出可能得到的最大和,每個例項的輸出佔一行。

sample input15

73 8

8 1 0

2 7 4 4

4 5 2 6 5

sample output

30原始碼:

#include"stdio.h"

#define n 50

int main()

for(i=1; i < row+1; i++) } 

for(j=1; j<=i; j++)

max[0][j]=max[1][j];

}maxsum = max[0][1];

for(i=2;i<=row;i++)

if(maxsum < max[0][i])

maxsum = max[0][i];

printf("the max sum is:%d\n",maxsum); 

}return 0;

}

動態規劃(一) 數塔,巢狀矩形問題

1 數塔問題 1.1 思路 把每乙個點看成乙個狀態,即從每個狀態開始到達終點的最大值稱為它的狀態值,由此可見,每乙個點的最大值,與它所連的兩個點的狀態值的大小密切相關。對此,我們引出乙個方程。狀態轉移方程 d i,j a i,j max 1.2 解決方法 方法一 遞迴計算 int solve int...

動態規劃 數塔問題

有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?從頂點出發時到底向左走還是向右走應 取決於是從左走能取到最大值還是從右走能取到最大值,只要左右兩道路徑上的最大值求出來了才能作出決策。同樣的道理下一層的走向又要取決於再下一層上的最大值是否已經求出才能...

動態規劃 數塔問題

從上到下出發,每次只能走到下面相鄰的節點,尋找一條路徑使經過的數值和最大。12 15 10 6 8 2 18 9 5 19 7 10 4 15 動態規劃思路 假設到第i行第j個元素為止的最優解為f i j 則f i j 實際上至於f i 1 j 和f i 1 j 1 有關。include inclu...