最長單調遞增子串行及思維題 動態規劃

2021-09-29 09:31:11 字數 482 閱讀 8879

1.dp陣列的作用:

我們在這裡定義乙個陣列dp[maxn]。

子串行的意思是可以不連續,那麼不就存在乙個問題,問題是,到底誰選誰不選,那麼我們定義的dp陣列的意思就是:第i數字一定在回文串中,那麼此時前i個數字中到底最長單調遞增子串行多長。

2.動態規劃的動態方程:

我們dp陣列定義的近乎完美

#include

#include

#include

#include

using namespace std;

#define maxn 10000

int dp[maxn];//意思是:第i個必選,那麼前i中的最長單調遞增子串行的長度

int n;

int a[maxn];

int main()//最長單調遞增子串行

}for(int i = 1; i <= n; i++)

cout

}

最長單調遞增子串行

單調子串行包含有單調遞增子串行和遞減子串行,不失一般性,這裡只討論單調遞增子串行。首先,從定義上明確我們的問題。給定序列a1,a2,an,如果存在滿足下列條件的子串行 ai1 ai2 aim,其中i1即稱為乙個原序列的長度為m的單調遞增子串行,那麼,現在的問題是我們要找出乙個序列的最長的單調遞增子串...

最長單調遞增子串行

設計乙個o n2 時間的演算法,找出由n個數組成的序列的最長單調遞增子串行。輸入 第1個整數n 0分析 用陣列b 0 i 記錄以a i 0 i a k 並且 b k max b j 1 j i 1 所以 b i b k 1.如果存在k b k b k 並且 a i a k 即 b i 不是滿足條件的...

最長單調遞增子串行 動態規劃

給定乙個序列x 0 n 找出它的最長的單調遞增子串行 longest increasing subsequence 使用動態規劃方法。對於i 1,2,n,考慮以xi作為最後項的最長遞增子串行的長度c i 如果在xi項前面存在xj xi 那麼 c i max 1 否則,c i 1.因此,c i max...