HDU1087(最長上公升子串行DP)

2021-06-28 03:10:07 字數 696 閱讀 7721

解題思路:

i < j 時 , dp[ i ] = max( dp[ j ] + a[ i ] , a[ i ] ) 。記錄儲存最大的dp[ i ]  值即可。dp[ i ] 代表從1到 i 的最大上公升子串行的和,裡層迴圈為dp[ i ]做更新,尋找1到 i 區間內的最大上公升子串行和,從而使得其具有區域性最優子結構。

完整**:

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

#pragma comment(linker, "/stack:102400000,102400000")

typedef long long ll;

typedef double db;

typedef unsigned uint;

typedef unsigned long long ull;

/** constant list .. **/ //}}

cout << maxx << endl;

}}

HDU 1087 最長上公升子串行和

題意 給你一串行,找出乙個和最大的上公升子串行,輸出它的和。思路 動態規劃,建立dp陣列。因為這題要求是上公升子串行,我們需要知道當前子串行末尾的值,所以可使dp i 表示以i結尾的序列的最大和。這樣迴圈到a i 時,可通過找到dp陣列前i 1項的最大值dp j 並比較a j 當前序列最後一項 與當...

動態規劃 最大上公升子串行(hdu1087)

題目描述 求乙個序列中 不一定連續 可以跳躍 但是數值遞增的最大和子串行 解題思路 這道題和之前的子串行題不一樣,因為無法判斷當前節點的取捨情況,即1,2,10序列,這個10我未必會選,因為10後面可能是7,8,9 看起來總覺得和揹包問題有什麼聯絡,其實的確差不多。我們先假設 乙個點i,以及某個子最...

D 最長上公升子串行

乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 等等。這些...