問題描述:
給定乙個字串,求出其不降子串行的最大長度。
分析:從後往前逆推:
06
對於n個數,我們可以分為n-1個階段。
07
我們由後向前搜尋(逆推法),我們可以這樣思考:
08
1· 對a(n)來說,由於它是最後乙個數,所以當從a(n)開始查詢時,只存在長度為1的不下降序列;
09
2· 若從a(n-1)開始查詢,則存在下面的兩種可能性:
10
①若a(n-1)
11②若a(n-1)>a(n)則存在長度為1的不下降序列a(n-1)或a(n)。
12
3· 一般若從a(i)開始,此時最長不下降序列應該按下列方法求出:
13
在a(i+1),a(i+2),…,a(n)中,找出乙個比a(i)大的且最長的不下降序列,作為它的繼。
14
4.用陣列f(i)點i到n的最長的不降子串行的長度.
最長不降子串行
原文 這題目是經典的dp題目,也可叫作lis longest increasing subsequence 最長上公升子串行或者 最長不下降子串行。很基礎的題目,有兩種演算法,複雜度分別為o n logn 和o n 2 一 問題描述 設有由n個不相同的整數組成的數列,記為 a 1 a 2 a n 且...
DP入門之《LIS 最長不降子串行》
剛學dp沒思路,就去找書看,剛開始了解了記憶化搜尋與遞推,對dp問題漸漸開始有了一些理解,並有了一些自己的想法,對書上描述的狀態轉移方程開始感覺有點意思了。今天又看看了對lis的解決方案的描述,感覺貌似明白了,就試著寫了寫,只寫了20行的 就解決問題了,當然,這段 只能給出最優值,而不能給出最優方案...
最長不降子串行問題
一 問題 輸入 設有由n個不相同的整數組成的數列,記為 a 1 a 2 a n 且a i a j i j 若存在i1長度為e的不下降序列。輸出 程式要求,當原數列給出之後,求出最長的不下降序列。例子 數列3,18,7,14,10,12,23,41,16,24。3,18,23,24就是乙個長度為4的不...