求兩個輸入序列的最長的公共子字串的長度。子字串中的所有字元在源字串中必須相鄰。
如字串:21232523311324和字串312123223445,他們的最長公共子字串為21232,長度為5。
兩行,第一行為第乙個字串x,第二行為第二個字串y,字串不含空格並以回車標示結束。x和y的串長都
不超過10000。
兩行,第一行為最長的公共子字串的長度,第二行輸出乙個最長的公共子字串。
(1)若最長的公共子字串有多個,請輸出在源字串x中靠左的那個。
(2)若最長公共子字串的長度為0,請輸出空串(乙個換行符)。
如輸入:
21232523311324
152341231
由於523和123都是最長的公共子字串,但123在源串x中更靠左,因此輸出:
3123
21232523311324
312123223445
521232
這部分是我自己寫的,不是老師的注釋。首先,我們要知道,最長公共子串和最長公共子串行的區別。這題只要連續的相同才可以,而公共子串行則可以跳過幾個數字相同也可以。
另外,本人不才,只想到用棧的方法存陣列,如果有更好的方法,希望大家指出。
#include
#include
#include
#include
using
namespace std;
intmain()
for(
int i=
1;i<=blength;i++
)for
(int i=
1;i<=alength;i++)}
else}}
printf
("%d\n"
,max)
;//輸出最大值
bool flag =
false
;for
(int i=
1;i<=alength;i++
) flag =
true
;break;}
}}for(
int i=
0;i)return0;
}
最長公共子字串
關於題目理解,請注意和最長公共子串行的區別,最長公共子字串的解法是動態規劃,但是比較難想到表的構造方法。注意到,設給定字串為str1 和 str2 二者的長度分別是 len1 和 len2 那麼解空間大小之多是len1 len2?假設最長公共子字串為substr common,那麼substr co...
最長公共子字串
描述 求兩個輸入序列的最長的公共子字串的長度。子字串中的所有字元在源字串中必須相鄰。如字串 21232523311324和字串312123223445,他們的最長公共子字串為21232,長度為5。輸入格式 兩行,第一行為第乙個字串x,第二行為第二個字串y,字串不含空格並以回車標示結束。x和y的串長都...
最長公共子串,字串
目前,在各大 或者是,有著不少的關於這個問題的講解,但是目前覺得都不是很清晰明白!現在普遍的解法都是用動態規劃的方式來做這道筆試題。或者是經典的面試題。這裡我做乙個自認為比較清楚的講解。說到動態規劃很多人都不會感到很陌生。但是有多少知道動態規劃什麼?精髓在 這裡僅僅提供一些個人見解,首先,動態規劃不...