動態規劃 公共子串行

2021-07-29 18:58:30 字數 621 閱讀 6141

輸入兩個字串,輸出其中最長的公共子串行。

狀態:有兩個字串,就要有兩個控制狀態的變數a[i][j]。第乙個字串的第i個字元,第二個字串的第j個字元。b[i]是第乙個字串,c[i]是第二個字串。

子問題:求第乙個字串的第i個字元和第二個字串的第j個字元是不是相等。

狀態轉移方程:第乙個字串的第i個字元和第二個字串的第j個字元有兩種情況。

1。。當b[i]==c[j]時,就是要求不包含這個兩個字元時的最長公共子串行,然後再加一   即a[i][j]=a[i-1][j-1]+1。

2。。當不相等的時候,就是求只包含這兩個字元中的乙個的最長公共子串行,當包含了兩個,這個值也不會變。即a[i][j]=max(a[i-1][j],a[i][j-1])。

#include

#include

#include

#include

using

namespace std;

intmain

(),la,lb;

string

a,b;

while

(cin>>a>>b)

}cout<}return0;

}

動態規劃 公共子串行

公共子串行 總時間限制 1000ms 記憶體限制 65536kb 描述 我們稱序列z z1,z2,zk 是序列x x1,x2,xm 的子串行當且僅當存在 嚴格上公升 的序列 i1,i2,ik 使得對j 1,2,k,有xij zj。比如z a,b,f,c 是x a,b,c,f,b,c 的子串行。現在給...

動態規劃 公共子串行

描述 我們稱序列z z 1,z 2,z k 是序列x x 1,x 2,x m 的子串行當且僅當存在嚴格上公升的序列 i 1,i 2,i k 使得對j 1,2,k,有x ij z j。比如z a,b,f,c 是x a,b,c,f,b,c 的子串行。現在給出兩個序列x和y,你的任務是找到x和y的最大公共...

動態規劃 04公共子串行

題目 輸入兩串字串,求這兩串字串中公共子串行的最長長度。解題思路 用二維陣列f來存公共字串的最長長度,如果a i 1 b j 1 那麼公共子串行長度增加一位,如果a i 1 b j 1 則f i j max,通過兩重迴圈到最後得出的結果即是最大值。細節處理 通過while輸入陣列字串,定義乙個max...