最長公共子串行,指兩個字串,子串行中最長的字串。(不一定是連續字元)
//最長公共子串行長度
intlcs_length
(const string &str1,
const string &str2,vectorint>> veca)
for(j =
0; j <= str2.
length()
; j++
)for
(i =
1; i <= str1.
length()
; i++
)else}}
return veca[str1.
length()
][str2.
length()
];}//該函式找出所有的lcs的序列,並將其存在vector中
void
printalllcs
(string &str1, string &str2,
int i,
int j,
vectorint>
>
&veca, string lcs_str)
else}}
all_lcs.
insert
(lcs_str)
; cout <<
*all_lcs.
begin()
<< endl;
}
最長公共子串及長度,要求連續。
void
getlcs
(string str1, string str2)
else
if(record[i]
[j]> maxlen)
} cout << maxlen << endl;
cout << str1.
substr
(maxend - maxlen+
1, maxlen)
<< endl;
}
動態規劃之最長公共子串行 最長公共子串
題目 如果字串1的所有字元按其在字串中的順序出現在另外乙個字串2中,則字串1稱之為字串2的子串行。注意,並不要求子子串行 字串1 的字元必須連續出現在字串2中。請編寫乙個函式,輸入兩個字串,求它們的最長公共子串,並列印出最長公共子串行。例如 輸入兩個字串bdcaba和abcbdab,字串bcba和b...
動態規劃之最長公共子串行
最長公共子串行簡介 舉例說明並分析 塊測試結果 乙個給定序列的子串行是在該序列中刪去若干元素後得到的序列,確切的說,若給定序列x 則另一串行z x的子串行是指存在乙個嚴格的下標序列,使得對於所有的j 0,1,k 1有zj xij。例如序列z 是序列x 的子串行,相應的遞增下標序列維。最長公共子串行問...
動態規劃之最長公共子串行
給出兩個字串,求出這樣的一 個最長的公共子串行的長度 子串行 中的每個字元都能在兩個原串中找到,而且每個字元的先後順序和原串中的 先後順序一致。sample input abcfbc abfcab programming contest abcd mnp sample output 4 2 0對於動...