刪除最少字元,得到回文串

2021-07-29 10:50:52 字數 577 閱讀 2848

給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?

輸出需要刪除的字元個數。

tips:最長公共自序列的變形,如果能想到這點的話,解決起來就不會太困難。

#include#include#includeusing namespace std;

const int max = 1001;

int maxlen[max][max]; //最長公共子串行,動態規劃求法

int maxlen(string s1, string s2)

else}}

return maxlen[length1][length2];}

int main()

//利用回文串的特點

string s2 = s;

reverse(s2.begin(),s2.end());

int max_length = maxlen(s, s2);

cout << length - max_length << endl;

}return 0;

}

php移除最少字元變成回文串

s for i 0 i 15 i s string strtoupper s echo string 這是隨機生成乙個字串 一段字串 移除最少的字元 使之成為乙個回文串 比如 abba ababa a 都是回文串 absdfda 移除最少字元後形成回文 變成 adfda 重點講解下 回串文的 第乙個...

插入最少字元使原串變成回文串

51nod1092 回文字串 解法一 這裡插入字元和刪除對應字元是乙個道理,所以將原串逆序之後求一遍lcs即可 include using namespace std const int maxn 1000 char a maxn 10 char b maxn 10 int sum maxn 10 ...

演算法題 源字串插入最少字元生成回文串

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