hdu 2084 數塔 dp 動態規劃

2022-05-25 07:36:09 字數 799 閱讀 7014

開始動態規劃的學習了,先是比較基礎的,很經典的數塔。附上題目鏈結  

這題的狀態轉移方程是  dp[i][j] = max(dp[i-1][j-1],dp[i-1][j]) + m[i][j]; (dp[i][j] 表示在第 i 層 第 j 列時的最大和) 。 然後乙個雙重迴圈,便能算出。當然可以用滾動陣列。但是注意用滾動陣列解題時,第二層迴圈 j 必須從大到小, 因為 狀態轉移方程 為  f  [ j ] = max( f[ j-1 ],  f[ j ] ) + m[ i ] [ j ];  每次更新都要用到前面的 j - 1 所以如果從小開始,不就被更新了,不在是上次迴圈的值了。結果錯誤。

**:

#include using

namespace

std;

/*hdu 2084 數塔

*/int m[101][101

];int dp[103][103

];int f[104

];int

n;//二維陣列版

void

dp ()

}int mx = 0

;

for (int j =1;j<=n;++j)

if (dp[n][j] > mx) mx =dp[n][j];

cout

<< mx <} //

滾動陣列版

void

d_p()

}cout

<< mx <}int

main ()

}d_p ();

}

return0;

}

動態規劃(DP) 數塔問題。HDU 2084

在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?input 輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整...

hdu 2084 數塔(動態規劃)

problem description 在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?輸入資料首先包括乙個整數c,表示測試例項的個數,...

HDU 2084 數塔 動態規劃

在講述dp演算法的時候,乙個經典的例子就是數塔問題,它是這樣描述的 有如下所示的數塔,要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?已經告訴你了,這是個dp的題目,你能ac嗎?輸入資料首先包括乙個整數c,表示測試例項的個數,每個測試例項的第一行是乙個整數n 1 n...