SYZOJ - 補充構造迴文串(動態規劃)
題目連結:
記憶體限制:128 MiB時間限制:1000 ms
題目描述
迴文串就是類似aba, bcdcb,AAA這樣的字串。即將它反轉過來,與原串相等。
另外這樣的字串,例如ab,我們可以發現,在最後補充一個a也能使它變成一個迴文串 aba,或者在他的最前面插入一個b,能使它變成一個迴文串bab
現在輸入一個字串(它很可能不是迴文串),那麼問最少給它插入多少個字元,能使它變成一個迴文串?
輸入格式
一行,一個字串
字串可能出現類似%、*等字元,保證均為可見字元。
輸出格式
一個數字,需要新增的最少字元數
如果不需要新增字元,輸出0
樣例輸入
ab
樣例輸出
1
資料範圍與提示
2 <= 字串長度 <= 200
保證輸入的字串中間不會出現空格
提示
把輸入的字串反轉過來,與原串求LCS(最長公共子序列),然後......
解題思路
求最長公共子序列。
#include <bits/stdc++.h>
using namespace std;
int dp[205][205];
char str[205];
int main() {
int len;
scanf("%s", str);
len = strlen(str);
for (int i = 1; i <= len; i++) {
for (int j = 1; j <= len; j++) {
if (str[i - 1] != str[len - j])
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);
else dp[i][j] = dp[i - 1][j - 1] + 1;
}
}
printf("%d\n", len - dp[len][len]);
return 0;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22198239/viewspace-2868745/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [動態規劃] 六、最長迴文子串動態規劃
- 迴文串問題(動態規劃DP C++)動態規劃C++
- 一文學懂遞迴和動態規劃遞迴動態規劃
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- 遞迴、分治和動態規劃遞迴動態規劃
- 省錢構建迴文串
- 一文搞懂動態規劃動態規劃
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- lc1771 由子序列構造的最長迴文串的長度
- python-動態規劃的遞迴、非遞迴實現Python動態規劃遞迴
- 動態規劃動態規劃
- 看動畫輕鬆理解「遞迴」與「動態規劃」動畫遞迴動態規劃
- 演算法基礎--遞迴和動態規劃演算法遞迴動態規劃
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- 一文帶你入門動態規劃動態規劃
- [leetcode] 動態規劃(Ⅰ)LeetCode動態規劃
- 動態規劃法動態規劃
- 模板 - 動態規劃動態規劃
- 動態規劃初步動態規劃
- 動態規劃分析動態規劃
- 動態規劃(DP)動態規劃
- while迴圈補充While
- 動態規劃入門——動態規劃與資料結構的結合,在樹上做DP動態規劃資料結構
- 演算法系列-動態規劃(1):初識動態規劃演算法動態規劃
- 2023 go崗位-跳槽-學習規劃(求補充)Go
- 動態規劃小結動態規劃
- [leetcode 1235] [動態規劃]LeetCode動態規劃
- 動態規劃專題動態規劃
- 動態規劃-----線性動態規劃
- 好題——動態規劃動態規劃
- 動態規劃初級動態規劃
- 淺談動態規劃動態規劃
- 3.動態規劃動態規劃
- 動態規劃題單動態規劃
- 動態規劃 總結動態規劃
- 雙序列動態規劃動態規劃
- 動態規劃方法論動態規劃
- [atcoder 358] 【動態規劃】動態規劃