Palindrome(dp)
2024-08-31 02:24:41
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 ;
}
最新文章
- Delphi XE6 原生解析json
- 通过刷bios的方式在win8.1平板上启动windows phone模拟器
- 161116、springmvc自己实现防止表单重复提交(基于注解)
- adb shell 查找并删除文件
- iOS点击cell查看大图,点击大图还原小图-b
- Scut:Redis 资源管理器
- 第十二篇 C# 将HTML 直接转成Excel
- Rem与Px的转换[转载]
- 让44.1版本的sketch打开更高版本的sketch文件
- .net 简单任务调度平台安装简要说明
- C#基础之访问修饰符
- linux下usb转串口驱动分析【转】
- js 弹窗广告24小时显示一次
- django生成文件txt、pdf(在生成 PDF 文件之前,需要安装 ReportLab 库)
- Unity 动画系统 Animation 和 Animator的小实例
- Java Swing界面编程(21)---事件处理:窗口事件
- Redis的主从同步手动执行故障切换
- LCA 【bzoj1787】[Ahoi2008]Meet 紧急集合
- PYTHON调用C接口(基于Ctypes)实现stein算法最大公约数的计算
- PHP 变量作用域