動態規劃之最長上公升子串行

2021-08-18 16:19:47 字數 468 閱讀 9219

北大郭煒老師講的能採用動態規劃求解問題的特點:(1)問題具有最優子結構的性質;(2)無後效性。實現動態規劃的三個步驟:(1)講原問題分解為子問題;(2)確定狀態以及初始狀態(邊界值);(3)狀態轉移方程(「人人為我」遞推型)。

第一步的子問題就是a[i]為終點的最長上公升子串行。

#include#includeusing namespace std;

const int maxn = 1010;

int a[maxn],maxlen[maxn]; // 確定狀態maxlen

int main()

for (int i = 2; i <= n; i++)

cout << *max_element(maxlen + 1, maxlen + n + 1) << endl;

system("pause");

return 0;

}

動態規劃 之 最長上公升子串行

乙個數的序列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 等等。這些子串...

動態規劃之最長上公升子串行

動態規劃指的是將乙個繁雜的問題分解成子問題之後,通過求解子問題的最優解,從而求得整體最優解。輸入資料 輸入的第一行是序列的長度n 1 n 1000 第一行給出序列的n個整數,這些整數的取值範圍在0 10000.輸出要求 最長上公升子串行的長度。輸入樣例 7 1 7 3 5 9 4 8 輸出樣例 範例...

動態規劃學習之最長上公升子串行

這個問題的關鍵是建立狀態方程dp i 儲存演算法a i 為終點的最長上公升子串行的長度,那麼dp i 的解題思路就是從前面找到比a i 小,並且具有最大dp j 0 j i 1 的j,並且在後面接上的a i 因此方程為 dp i dp j 1 0 j i 1 max dp j 除此之外,因為都是從比...