動態規劃 最長不下降子串行LIS

2021-09-12 17:50:07 字數 605 閱讀 8458

找出一組資料中最長的不下降子串行的長度。

1,連續情況。

即必須要求子數列連續相依

1 2 3 -1 -2 7 9中的最長子串行為3(1,2,3)

易得遞推公式:if(f[i]>=f[i-1]) dp[i] = dp[i-1]+1;

else dp[i] = 1;

#includeusing namespace std;

#define maxn 105

int f[105];

int dp[105];

int main()

printf("%d\n",dp[n-1]);

} }

2,非連續情況

不必要求子數列連續相依

例如:1,2,3,-1,-2,7,9的最長不下降子串行為:1,2,3,7,9

遞推公式為dp[i] = dp[j]+1(jusing namespace std;

#define maxn 105

int f[105];

int dp[105];

int main()

} printf("%d\n",dp[n-1]);

} }

動態規劃 最長不下降子串行(LIS)

最長不下降子串行 longest increasing subsequence 是動態規劃中的乙個非常經典的問題 在乙個數字序列中,找到乙個最長的子串行 可以不連續 使得這個子串行是不下降 非遞減 的 例如a 它的最長不下降子串行是,長度為 5。對於這個問題,最簡單的辦法就是暴力列舉每種情況,即對於...

線性動態規劃 最長不下降子串行(LIS)

我們知道,遞推就是按照遞推公式不斷往前求解的乙個過程,對於當前,只有乙個狀態描述當前的值。若某些問題並非由乙個狀態而是由多個狀態不斷推導,那麼這種方法就是動態規劃,簡稱dp。動態規劃是運籌學的乙個分支,是將問題分解成各個階段,由相鄰的兩個階段根據狀態轉移方程推到求解的一種方法。所謂的線性動態規劃,就...

最長不下降子串行LIS

最長上公升子串行問題是解決很多問題的根本,它能幫助你理解二分的思想。考慮一下 對於乙個序列 n nn 請你查詢n nn中最長的子串行a aa,使得任意 i i j 時 a i a i a i a i a i a i 例如乙個長度為5 55的n nn 5553 331112 22444 顯然,它的最長...