動態規劃 04公共子串行

2021-07-30 18:38:09 字數 508 閱讀 1923

題目:輸入兩串字串,求這兩串字串中公共子串行的最長長度。

解題思路:用二維陣列f來存公共字串的最長長度,如果a[i-1]==b[j-1]那麼公共子串行長度增加一位,如果a[i-1]!=b[j-1]則f[i][j]=max,通過兩重迴圈到最後得出的結果即是最大值。

細節處理:通過while輸入陣列字串,定義乙個max,利用迴圈通過max與f[i]比較,最終max即是最大值。

**:#include

using namespace std;

int main()

,max=0;

for(i=1;i<=strlen(a);i++)

for(j=1;j<=strlen(b);j++)

}for(i=1;i<=strlen(a);i++)

for(j=1;j<=strlen(b);j++)

if(f[i][j]>max)

max=f[i][j];

cout《感想:動態規劃應找對狀態轉移方程,這是解決問題的關鍵。

動態規劃練習一 04 公共子串行

描述 我們稱序列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的最大公共...

動態規劃 公共子串行

公共子串行 總時間限制 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 的子串行。現在給...

動態規劃 公共子串行

輸入兩個字串,輸出其中最長的公共子串行。狀態 有兩個字串,就要有兩個控制狀態的變數a i j 第乙個字串的第i個字元,第二個字串的第j個字元。b i 是第乙個字串,c i 是第二個字串。子問題 求第乙個字串的第i個字元和第二個字串的第j個字元是不是相等。狀態轉移方程 第乙個字串的第i個字元和第二個字...