Java求數塔(最優路徑)問題

2021-08-18 20:08:18 字數 775 閱讀 9711

有這樣乙個陣列;

求從數塔頂端至底端和最大的最優路徑。

(自底向頂)解析:

對每一層的每兩個相鄰資料而言;最優路徑從他們的父節點值會達到他們其中乙個,例如如果最優路徑經過第三層的2;

那麼第4層他的兩個子節點19,7中必然選擇19;

對於2來講,如果最優路徑經過他,他選擇了19以後就能為路徑貢獻21;相鄰點18選擇了10以後貢獻28;則他們的父節點10就會選擇10對應的這條路徑;

依次向上可以得到下圖所示的乙個陣列:

5049

3834

2921

2819

2119710

416從第一層開始向下找到最大子節點即最優路徑經過點。

(自底向頂)**:

package dynamicprogramming;

public class towerofnumbers

}}

system.out.println("最優路徑長度:" + dptower[0][0]);

system.out.println("最優路徑:");

int j=0;//路徑節點

for(int i = 0;i");

} if(j自頂向底則是乙個子節點擊擇父節點;

自頂向底選擇最大子節點即可得到最優路徑。

示例資料圖表**

模4 最優路徑問題

如下圖 從1到4找出一條路徑,要求路徑的總長度mod4的餘數最小。分析 一條從1到4的最優路徑,在它走到2或3時mod4的餘數不一定最小。也就是說,最優策略的子策略不一定最優,所以本問題不滿足最優化原理,那麼也就不能用動態規劃來解決。但是我們可以把它轉化為判定性問題,用遞推來解決。設dp k i 為...

動態規劃 求數字三角形最優解和最優路徑

給定乙個由n行數字組成的數字三角形如下圖所示。試設計乙個演算法,對於給定的由 n行數字組成的數字三角形,計算從三角形的頂至底的路徑經過的數字和的最大值。注意 對於第i層的第j個數字,其所在路徑的下乙個數字只能是第i 1層的第j個或第j 1個數字。第 1 行是數字三角形的行數 n,1 n 100。接下...

java路徑問題

action內獲取當前絕對路徑 1 利用system.getproperty 函式獲取當前路徑 system.out.println system.getproperty user.dir user.dir指定了當前的路徑 2 使用file提供的函式獲取當前路徑 file directory new...