回文字串ACM問題

2021-07-26 04:27:23 字數 949 閱讀 5746

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:4 描述

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

輸入第一行給出整數n(0

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

樣例輸入

1

ab3bd

樣例輸出

2
這個問題不難,當然暴力的方法這裡不說,有一種方法就是在串的首末逐漸向中比較,但這裡要說一種更簡單的方法。我們只需要把串str倒置,然後求出倒置串和原串的最長公共子串行lcs的長度,再用串場len減去這個長度即是了。

下面給出**:

#include#includeusing namespace std;

int max(int a,int b)

int lcs[1000][1000]; //用二維陣列c[i][j]記錄串x1x2...xi與y1y2...yj的lcs長度

int lcs_funtion(char str1,char str2)

} return lcs[len1][len2]; //返回動態規劃的最終結果

}int main()

temp[i][k]='\0'; //注意串的結束標誌'\0'

謝謝

回文字串問題

a 回文串問題 time limit 1000ms memory limit 131072kb 64bit io format lld llu submit status practice csu 1260 description 回文串 是乙個正讀和反讀都一樣的字串,字串由數字和小寫字母組成,比如...

ACM37 回文字串

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

回文字串切割問題

判斷是否是回文 bool ispalindrome string s return true 字串切割 ans存放切割的所有結果 cur存放當前的切割結果 void dfs string s,vector ans,vector cur,int index 改進void ispalindrome ve...