找出一組資料中最長的不下降子串行的長度。
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 顯然,它的最長...