最長有序子串行 經典DP

2021-07-04 19:44:49 字數 616 閱讀 5042

給一串資料i0

1234

5678

num[i]14

7258

369

來得到其對應位上的資料的最長有序子串行的長度l;i0

1234

5678

num[i]14

7258

369f[i]12

3234

345

這是個經典的dp問題。

在這裡我們利用f[i]的陣列;

來儲存其之前資料的最長有序子串行

進而得到後面的。

/*最長有序子串行*/

#includeusing namespace std;

int main()

; int f[9];

for(int i=0;i<=8;i++)

for(int i=0;i<=8;i++)

{ cout<

剛開始寫成了

if(num[j]f[i]=f[j]+1;

後來發現這樣只計算了對應位置前面小於該值的數目。並沒有計算出最長有序子串行。 

因此當f[i]小於f[j]+1後才進行更新能保留住前面的最長有序子串行的值。

最長上公升子串行,經典

class solution def lengthoflis self,nums list int int 方法一,動態規劃 ifnot nums return 0 dp 1 len nums dp以0位結尾的,最長上公升子串行長度為1 for i in range 1 len nums for j...

經典Dp 單調遞增最長子序列 經典dp

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 求乙個字串的最長遞增子串行的長度 如 dabdbf最長遞增子串行就是abdf,長度為4 輸入第一行乙個整數0 輸出輸出字串的最長遞增子串行的長度 樣例輸入 3 aaaababc abklmncdefg 樣例輸出 1 37 inc...

POJ1458 最長公共子串行 經典DP

題目不說了,學習dp時候經典的例子。如果現在有兩個序列x 和y 他們的lcs是z 下面分兩種情況討論 1 如果xm yn,那麼一定有zk xm yn,即xm與yn相等時他們一定是lcs結尾的那個元素。lcs x,y lcs x y xm。2 如果xm yn,那麼zk xm 和zk yn至少有乙個成立...