動態規劃題:把一個字串變為迴文串
版權所有。所有權利保留。
歡迎轉載,轉載時請註明出處:
http://blog.csdn.net/xiaofei_it/article/details/17172891
把一個字串變成迴文串,最少要新增幾個字元?
動態規劃解:
f(i,j)表示s[i..j]變為迴文串需要新增的最少字元數。
f(i,j)=0 if i>=j
f(i,j)=f(i+1,j-1) if i<j and s[i]==s[j]
f(i,j)=min(f(i,j-1),f(i+1,j))+1 if i<j and s[i]!=s[j]
程式碼如下:
#include <iostream>
#include <string.h>
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
int f[100][100];
int main()
{
string s;
while (cin>>s)
{
memset(f,0,sizeof(f));
for (int i=s.length()-1;i>=0;i--)
for (int j=i+1;j<s.length();j++)
if (s[i]==s[j])
f[i][j]=f[i+1][j-1];
else
f[i][j]=min(f[i][j-1],f[i+1][j])+1;
cout<<f[0][s.length()-1]<<endl;
}
return 0;
}
相關文章
- 迴文串問題(動態規劃DP C++)動態規劃C++
- [動態規劃] 六、最長迴文子串動態規劃
- SYZOJ - 補充構造迴文串(動態規劃)動態規劃
- (字串動態規劃)一個字串變成另一個字串的步驟數字串動態規劃
- 一文學懂遞迴和動態規劃遞迴動態規劃
- 一文搞懂動態規劃動態規劃
- 動態規劃9:變態跳臺問題動態規劃
- (迴文串)leetcode各種迴文串問題LeetCode
- 【動態規劃(一)】動態規劃基礎動態規劃
- 最長公共子序列&迴文字串 nyoj動態規劃字串動態規劃
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- UVA 11584 Paritioning by Palindromes(動態規劃 迴文)動態規劃
- UVA 10739 String to Palindrome(動態規劃 迴文)動態規劃
- 動態規劃——字串分割(Word Break)動態規劃字串
- 一文帶你入門動態規劃動態規劃
- 好題——動態規劃動態規劃
- 動態規劃專題動態規劃
- 動態規劃題單動態規劃
- C語言:判斷一個字串是否為迴文C語言字串
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- 第五章 字串專題 ---------------- 5.10 題解:神奇的迴文串字串
- 一文讀懂動態規劃演算法動態規劃演算法
- 一維動態規劃和二維動態規劃中兩道經典題目動態規劃
- 爬臺階問題(遞迴和動態規劃實現)遞迴動態規劃
- 動態規劃練習題動態規劃
- 動態規劃解題方法動態規劃
- 動態規劃做題思路動態規劃
- 動態規劃,這幾個問題最常見!動態規劃
- 演算法之字串——最長迴文子串演算法字串
- 判斷迴文串 字串/數字相互轉換字串
- Leetcode:1616. 分割兩個字串得到迴文串LeetCode字串
- 動態規劃問題為什麼要畫表格?動態規劃
- 整數劃分問題(動態規劃)動態規劃
- 動態規劃 擺花 題解動態規劃
- 動態規劃之子序列問題動態規劃
- 揹包問題----動態規劃動態規劃
- 【動態規劃】揹包問題動態規劃