有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?
有形如圖所示的數塔,從頂部出發,在每一結點可以選擇向左走或是向右走,
一直走到底層,要求找出一條路徑,使路徑上的值最大。
這道題如果用列舉法,在數塔層數稍大的情況下(如40),則需要列舉出的路徑條數將是乙個非常龐大的數目。
如果用貪心法又往往得不到最優解。
在用動態規劃考慮數塔問題時可以自頂向下的分析,自底向上的計算。
從頂點出發時到底向左走還是向右走應取決於是從左走能取到最大值還是從右走能取到最大值,
只要左右兩道路徑上的最大值求出來了才能作出決策。
同樣的道理下一層的走向又要取決於再下一層上的最大值是否已經求出才能決策。
這樣一層一層推下去,直到倒數第二層時就非常明了。
如數字2,只要選擇它下面較大值的結點19前進就可以了。
所以實際求解時,可從底層開始,層層遞進,最後得到最大值。
總結:此題是最為基礎的動態規劃題目,階段、狀態的劃分一目了然。
HDU1176 免費餡餅 數塔問題
免費餡餅 題意 人物最開始站在座標為5的位置,每秒鐘最多橫向移動乙個單位,並且只能接住乙個單位距離內的的餡餅。天上會在某個時刻在某個位置掉落餡餅,問人物最多能夠接住幾個餡餅。題解 這是乙個典型的數塔問題,如果你非要較真,從5出發,去計算到最後時刻,所有移動的可能性,以及所有的接住餡餅數,那真有你的 ...
HDU 1176 免費餡餅 (DP 數塔問題)
include include include include using namespace std const int maxn 100005 int n int dp 15 maxn int arr 15 maxn int tmax intmain for int i tmax 1 i 0 i...
問題 A 數塔
時間限制 1 sec 記憶體限制 128 mb 提交 1311 解決 623 提交 狀態 討論版 給定乙個數塔,如下圖所示。在此數塔中,從頂部出發,在每一節點可以選擇走左下或右下,一直走到底層。請找出一條路徑,使路徑上的數值和最大。9 12 15 10 6 8 2 18 9 5 19 7 10 4 ...