51nod動態規劃入門 最長公共子串行

2021-07-10 16:58:27 字數 830 閱讀 7272

題目:給出兩個字串a b,求a與b的最長公共子串行(子串行不要求是連續的)。

輸入

第1行:字串a

第2行:字串b

(a,b的長度 <= 1000)

輸出

輸出最長的子串行,如果有多個,隨意輸出1個。

輸入示例

abcicba

abdkscab

輸出示例

abca

**如下:

#include#include#include#includeusing namespace std;

char a[1010],b[1010];

int lcs[1010][1010];

int b[1010][1010];

void printlcs(int d[1010], char *x, int i, int j)

else if(d[i][j]==1)

printlcs(d,x,i-1,j);

else

printlcs(d,x,i,j-1);

}//void p(char *x)

else}}

printlcs(b, a+1, l1, l2);

printf("\n");

// p(a+1);

} return 0;

}

51NOD 最長公共子串行問題

給出兩個字串a b,求a與b的最長公共子串行 子串行不要求是連續的 比如兩個串為 abcicba abdkscab ab是兩個串的子串行,abc也是,abca也是,其中abca是這兩個字串最長的子串行。輸入 第1行 字串a 第2行 字串b a,b的長度 1000 輸出 輸出最長的子串行,如果有多個,...

51NOD 最長公共子串行問題

最長公共子串行問題就是求序列a a1,a2,an,和b b1,b2,bm,的乙個最長公共子串行。因為最長公共子串行不唯一,讓我們把問題簡化,如何求出兩個序列的最長公共子串行長度呢?你首先能想到的恐怕是暴力列舉?那我們先來看看 序列a有 2 n 個子序列,序列b有 2 m 個子序列,如果任意兩個子串行...

51nod 最長公共子串行測試 LCS 回溯

輸入 第1行 字串a 第2行 字串b a,b的長度 1000 輸出 輸出最長的子串行,如果有多個,隨意輸出1個。輸入示例 abcicba abdkscab 輸出示例 abca 這道題比較6,但是利用每個位置的記錄進行回溯就更6,好好體會下。include include include includ...