最長公共上公升子串行

2021-09-29 14:54:47 字數 1195 閱讀 5101

熊大媽的奶牛在小沐沐的薰陶下開始研究資訊題目。

小沐沐先讓奶牛研究了最長上公升子串行,再讓他們研究了最長公共子串行,現在又讓他們研究最長公共上公升子串行了。

小沐沐說,對於兩個數列a和b,如果它們都包含一段位置不一定連續的數,且數值是嚴格遞增的,那麼稱這一段數是兩個數列的公共上公升子串行,而所有的公共上公升子串行中最長的就是最長公共上公升子串行了。

奶牛半懂不懂,小沐沐要你來告訴奶牛什麼是最長公共上公升子串行。

不過,只要告訴奶牛它的長度就可以了。

數列a和b的長度均不超過3000。

輸入格式

第一行包含乙個整數n,表示數列a,b的長度。

第二行包含n個整數,表示數列a。

第三行包含n個整數,表示數列b。

輸出格式

輸出乙個整數,表示最長公共子串行的長度。

資料範圍

1≤n≤3000,序列中的數字均不超過2^31−1

輸入樣例:42

2132

123輸出樣例:

2

#include

using

namespace std;

int dp[

3001][

3001];

int n, a[

3001

], b[

3001];

intmain()

max0 =

max(max0, dp[i]

[j]);}

cout << max0;

return0;

}

改進版

#include

using

namespace std;

int dp[

3001][

3001];

int n, a[

3001

], b[

3001];

intmain()

else

dp[i]

[j]=

max(dp[i]

[j], max1 +1)

; max0 =

max(max0, dp[i]

[j]);}

} cout << max0;

return0;

}

最長公共上公升子串行

題目描述 給定兩個整數序列,求它們的最長上公升公共子串行。輸入描述 輸入兩組資料,每組資料代表乙個整數序列,其輸入格式為 第一行輸入長度m 1 m 500 第二行輸入該序列的m個整數ai 231 ai 231 輸出描述 輸出共兩行。第一行輸出兩個序列的最長上公升公共子串行的長度l 第二行輸出該子串行...

最長公共上公升子串行

首先,在 a i b j 的時候有 dp i j dp i 1 j 為什麼呢?因為 dp i j 是以b j 為結尾的 lcia 如果dp i j 0 那麼就說明 a 1 a i 中必然有乙個字元 a k 等於b j 如果dp i j 等於0 呢?那賦值與否都沒有什麼影響了 因為 a k a i 那...

最長公共(上公升)子串行

題目 common subsequence 題目描述 給定兩個字串a和b 或數字序列 求乙個字串,使得這個字串是所給兩個字串的最長公共部分 可以不連續 動態規劃的做法 時間複雜度,o n m include include include include using namespace std co...