程式設計題 構造回文

2021-08-14 05:50:45 字數 1457 閱讀 4336

內容會持續更新,有錯誤的地方歡迎指正,謝謝!

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

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

輸入描述:

輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000

輸出描述:

對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。

示例:

輸入abcdba 輸出1

輸入google 輸出2

求乙個序列的回文,就是在求「這個序列」和「這個序列的倒序列」的最長公共子串行。其中,回文不一定是連續的,最長公共子串行也不一定是連續的。

總結:「乙個序列」和「這個序列的倒序列」的最長公共子串行就是這個序列的回文。

方法:(自底向上的)動態規劃—迭代

所用資料結構:string

所用標頭檔案:

1.引入#include是為了使用max()和reverse()

max()的原型:template const t& max(const t& a, const t& b);

reverse()用於反轉元素次序,會將區間[beg,end)內的元素全部逆序,注意別用在關聯式容器

2.引入#include當然是為了使用string

#include 

#include

#include

using

namespace

std;

#define max 1001

int maxarray[max][max];

int maxlength(string s1,string s2)

for(int j=0;j<=slength;++j)

for(int i=1;i<=slength;++i)

}return maxarray[slength][slength];

}int main()

string s2=s;//需要先拷貝,再利用reverse反轉序列

reverse(s2.begin(),s2.end());//reverse()返回型別為void

int reslength=maxlength(s,s2);

cout

0;}

把最醜的放最後—>博主的草稿圖:

隨便舉的乙個例子咯,你們也去隨便舉乙個,然後像我這樣畫一畫就懂了~

程式設計題 構造回文

給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。輸入例子 abcda goo...

程式設計題 構造回文

構造回文 時間限制 1秒 空間限制 32768k 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最...

程式設計題 構造回文

時間限制 1秒 空間限制 32768k 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除...