Palindrome(dp)
http://poj.org/problem?id=1159
题意:给定一个字符,问最少插入多少字符,使该字符串变成回文字符串。
思路:设原字符串序列为X,其逆字符串为Y,则最少插入的字符数=length(X)-X与Y的最长公共子序列的长度。
求LCS的状态转移方程为 max(dp[i-1][j],dp[i][j-1]) s1[i-1]!=s2[j-1]
dp[i][j] =
dp[i-1][j-1]+1; s1[i-1]==s2[j-1];
由于数据范围大,本题使用的滚动数组。
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <sstream>
#include <cstring> using namespace std;
int dp[][];
int main()
{
string s1,s2;
int n;
while(cin>>n)
{
cin>>s1;
s2 = s1;
reverse(s1.begin(),s1.end());
memset(dp,,sizeof(dp));
for (int i = ; i <= n; i ++)
{
for (int j = ; j <= n; j ++)
{
if (s1[i-]==s2[j-])
dp[i%][j] = dp[(i-)%][j-]+;
else
dp[i%][j] = max(dp[(i-)%][j],dp[i%][j-]);
}
}
int ans = n-dp[n%][n];
cout<<ans<<endl;
}
return ;
}
Palindrome(dp)的更多相关文章
- uva 10453 - Make Palindrome(dp)
题目链接:10453 - Make Palindrome 题目大意:给出一个字符串,通过插入字符使得原字符串变成一个回文串,要求插入的字符个数最小,并且输出最后生成的回文串. 解题思路:和uva 10 ...
- UVA 10739 String to Palindrome(dp)
Problem H String to Palindrome Input: Standard Input Output: Standard Output Time Limit: 1 Second In ...
- POJ 3280 Cheapest Palindrome DP题解
看到Palindrome的题目.首先想到的应该是中心问题,然后从中心出发,思考怎样解决. DP问题通常是从更加小的问题转化到更加大的问题.然后是从地往上 bottom up地计算答案的. 能得出状态转 ...
- CF 335B. Palindrome(DP)
题目链接 挺好玩的一个题,1Y... #include <cstdio> #include <cstring> #include <iostream> using ...
- POJ 3280 Cheapest Palindrome(DP)
题目链接 被以前的题目惯性思维了,此题dp[i][j],代表i到j这一段变成回文的最小花费.我觉得挺难的理解的. #include <cstdio> #include <cstrin ...
- uva 10453 - Make Palindrome(dp, 记录路径)
题目 题意: 给一个字符串 ,判断最少插入多少个字符 使字符串成为回文串, 并输出回文串. 思路:先用dp判断需要个数, 再递归输出路径. #include <iostream> #inc ...
- hdu 1513 && 1159 poj Palindrome (dp, 滚动数组, LCS)
题目 以前做过的一道题, 今天又加了一种方法 整理了一下..... 题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符. 方法一: 将该字符串与其反转求一次LCS,然后所求就是n减去 ...
- POJ1159 Palindrome(dp)
题目链接. 分析: 感叹算法的力量. 方法一: 设 dp[i][j] 为字符串 s, 从 i 到 j 需要添加的最少字符数. 那么如果 s[i] == s[j], dp[i][j] = dp[i+1] ...
- uva10617 - Again Palindrome(dp)
再次回文 输入:标准输入 输出:标准输出 时间限制: 2秒 是àpalindorme的读取相同的从左边,因为它从右侧的一个或多个字符的序列.例如,Ž,TOT和女士的 回文,但是,ADAM是不是. 给定 ...
- poj 3280 Cheapest Palindrome ---(DP 回文串)
题目链接:http://poj.org/problem?id=3280 思路: dp[i][j] :=第i个字符到第j个字符之间形成回文串的最小费用. dp[i][j]=min(dp[i+1][j]+ ...
随机推荐
- HDU_1063_Exponentiation_大数
Exponentiation Time Limit: 2000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- FusionCharts 更新 chart data 数据
var AlarmChart = null; function alarmChartReBuild(totalNum, alarmNum) { var alarmPart = (alarmNum * ...
- dva相关文档
https://dvajs.com/guide/getting-started.html#%E5%AE%9A%E4%B9%89-model-------dva.js https://dvajs.com ...
- linux强制踢出已登录的用户及本地用户
方法一: pkill -kill -t pts/0 方法二: fuser -k /dev/pts/0 你也可以给他发送关闭信息然后关闭 echo "你被管理员踢出了" > / ...
- ubuntu14.04远程软件VNC的安装、设置方法
ubuntu中VNCX11開機啟動保持靜默狀態方法: 1首先安裝vncx11. 2.設置vnc密碼,會自動保存在/home/test/.vnc/passwd中 3.將密碼複製到/etc中 4.在/et ...
- PHP常用的设计模式
工厂模式 工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式. 使用工厂模式的好处是如果你想要更改所实例化的类名等,则只需要更改该工厂方法内容即可,不需逐一寻找代码中具体实例化 ...
- C# 后台POST提交方式
1.第一种方式:用最新框架,但是针对IIS服务器的操作系统有关系,非R2的收不到数据: using (var reqConts = new MultipartFormDataContent()) { ...
- https webservice通讯 参考网址 http://blog.csdn.net/small____fish/article/details/8214938
一.生成密钥库和证书可参考以下密钥生成脚本,根据实际情况做必要的修改,其中需要注意的是:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意. 1.生成服务器证书库keyto ...
- HUD 1426 Sudoku Killer (DFS)
链接 : Here! 思路 : 记录下所有 "?" , 出现的位置, 然后 $DFS$ 一下, 对于每个位置来说都可以填充 $9$ 种数值, 然后对于判断填充是否合法需要三个标记数 ...
- Windows压缩包安装MySQL
一.下载zip版本 下载网址(如果浏览器下载很慢可以使用迅雷) http://dev.mysql.com/downloads/mysql/ 二.解压将得到的文件放置到任意目录 如果解压后的文件里没有d ...