LCS(最長公共子串行)求回文串最長

2021-09-12 13:22:11 字數 666 閱讀 7337

給定乙個字串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 ...