時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:4 描述
所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如"aba"。當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。
輸入第一行給出整數n(0
輸出每行輸出所需新增的最少字元數
樣例輸入
1ab3bd
樣例輸出
2
**ioi 2000
上傳者
hzyqazasdf
思路 可以求str和其翻轉後的字串的 公共子串行(因為題目上是說,最少新增,那麼新增的位置是由我們確定的),那麼少的那幾個字元都是要新增的。。
**
#include#include#include#include#include#include#include#define inf 0x3f3f3f
#define m 1000+10
using namespace std;
char str[m];
char ss[m];
int dp[m][m];
int main()
memset(dp,0,sizeof(dp));
for(int i=1;i<=strlen(str);i++)
}printf("%d\n",strlen(str)-dp[strlen(str)][strlen(str)]);
} return 0;
}
回文字串 最長公共子串行
時間限制 3秒記憶體限制 128兆 題目描述 所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的,比如 aba 當然,我們給你的問題不會再簡單到判斷乙個字串是不是回文字串。現在要求你,給你乙個字串,可在任意位置新增字元,最少再新增幾個字元,可以使這個字串成為回文字串。輸入第一行給出整數n...
最長公共子串行(LCS)與最長公共子串 DP
1 最長公共子串行 lcs 與最長公共子串 dp 子串應該比較好理解,至於什麼是子串行,這裡給出乙個例子 有兩個母串 比如序列bo,bg,lg在母串cnblogs與belong中都出現過並且出現順序與母串保持一致,我們將其稱為公共子串行。最長公共子串行 longest common subseque...
回文串 LCS(最長公共子串行)
乙個字串如果從左往右讀和從右往左讀都一樣,那麼這個字串是乙個回文串。例如 abcba abccba 蒜頭君想通過新增字元把乙個非回文字串變成回文串。例如 trit 可以新增乙個 i 變成回文串 tirit 請你用程式計算出,對於乙個給定的字串,最少需要新增幾個字元,才能變成回文串。輸入乙個長度為 n...