有這樣乙個陣列;
求從數塔頂端至底端和最大的最優路徑。
(自底向頂)解析:
對每一層的每兩個相鄰資料而言;最優路徑從他們的父節點值會達到他們其中乙個,例如如果最優路徑經過第三層的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...