解題思路:
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 等等。這些...