給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?
輸出需要刪除的字元個數。
輸入描述:
輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000.
輸出描述:
對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。
輸入例子1:
abcda
輸出例子1:
22分析:
要求刪掉字元最少,也就是最長的回文串,回文串的性質是正反讀起來一樣,所以我們將當前字串逆反得到乙個新的字串,然後求得這兩個字串的最長公共子串行的長度
然後字串的總長度減去最長公共子串行的長度,就是最少需要刪除的字元的個數
code:
#includeusingnamespace
std;
#define max_v 1005
#define me(a,x) memset(a,x,sizeof(a))typedef
long
long
ll;int dp[max_v][max_v];//
dp[i][j]表示a0.....ai和b0....bj的lcs長度
char
a[max_v],b[max_v];
intmain()
me(dp,0);
for(int i=1;i<=n;i++)
else}}
cout
}return0;
}
posted @
2019-03-09 15:18
y先森0.0 閱讀(
...)
編輯收藏
騰訊筆試題 構造回文
題目 給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數 輸入 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。案例輸入 abcda goog...
京東校招筆試題回文
京京和東東是好朋友。東東很喜歡回文。回文是指從前往後讀和從後往前讀是一樣的詞語。京京準備給東東乙個驚喜,先取定乙個字串s,然後在後面附上0個或者更多個字母形成回文,京京希望這個回文越短越好。請幫助京京計算他能夠得到的最短的回文長度。輸入包括乙個字串s,字串s長度length 1 length 50 ...
微軟筆試題 回憶(回文方面)
這道題當年我沒有做出來,今天微軟筆試又碰到了類似的題目 狠心要將這一塊吃透 主要還是對動態規劃掌握的不夠熟練。n個瓶子都有編號,每次能射擊1個或多個瓶子,如果是回文的就能一次性擊倒。最少幾次能全擊倒?輸入 1,2 輸出 2 輸入 1,3,4,1,5 輸出 3 說明 第一次先射3,變成 1,3,1,5...