回文字串 最長公共子串行

2021-08-13 16:07:49 字數 690 閱讀 8136

時間限制:3秒記憶體限制:128兆

題目描述

所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。

輸入第一行給出整數n(0接下來的n行,每行乙個字串,每個字串長度不超過1000.

輸出每行輸出所需新增的最少字元數

樣例輸入

1

ab3bd

樣例輸出

2
將原字串反轉,求原字串與反轉字串的最長公共子串行長度,再用總長度減去就是結果

注意:最長公共子串(要求連續)和最長公共子串行是不同的

#include#includeusing namespace std;

int c[1003][1003];

int f(int len,char a,char b)

} return c[len][len];

}int main()}}

return max;

}int main()

回文字串 最長公共子串行 DP

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文...

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

乙個字串如果從左往右讀和從右往左讀都一樣,那麼這個字串是乙個回文串。例如 abcba abccba 蒜頭君想通過新增字元把乙個非回文字串變成回文串。例如 trit 可以新增乙個 i 變成回文串 tirit 請你用程式計算出,對於乙個給定的字串,最少需要新增幾個字元,才能變成回文串。輸入乙個長度為 n...

最長公共子串行 最長公共子串

1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...