給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?
輸出需要刪除的字元個數。
輸入描述:
輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000.
輸出描述:
對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。
輸入
abcda
google
輸出
2
2
有關lcs的內容可以參考部落格
#include
#include
#include
#include
using namespace std;
int a[
1001][
1001];
intfun
(string s1)
else}}
num = len - a[len]
[len]
;return num;
}int
main()
return0;
}
回文串 LCS(最長公共子串行)
乙個字串如果從左往右讀和從右往左讀都一樣,那麼這個字串是乙個回文串。例如 abcba abccba 蒜頭君想通過新增字元把乙個非回文字串變成回文串。例如 trit 可以新增乙個 i 變成回文串 tirit 請你用程式計算出,對於乙個給定的字串,最少需要新增幾個字元,才能變成回文串。輸入乙個長度為 n...
最長公共子串行演算法(LCS)及最長公共子串求法
最長公共子串行演算法c 實現 string lcs string s1,string s2 int m s1.length 1 int n s2.length 1 動態二維陣列的定義方法 int lcs new int m for int i 0 i m i for int i 0 i m i 生成...
LCS求最長公共子串
問題描述 給兩個子串行a和b,求長度最長的公共子串行,如1,5,2,6,8,7和2,3,5,6,9,8,4的最長公共子串行為5,6,8另乙個解為2,6,8求出這樣的子串行最長是多少?狀態轉移方程 對a1,a2 ai和b1,b2,bj 當a i b j 時,d i,j d i 1,j 1 1 否則d ...