hdu_1513_Palindrome(LCS+滚动数组)
2016-05-06 22:47
218 查看
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1513
题意:给你一个字符串,问你最少插入多少个字符使其为回文字符。
题解:将字符串倒着保存,然后求一下原串和该串的最长公共子序列,然后字符串长度剪LCS就是答案
#include<cstdio> #define FFC(i,a,b) for(int i=a;i<=b;i++) int n,dp[2][5010]; char a[5010],b[5010]; void fuck(){ FFC(i,0,n)dp[0][i]=0,dp[1][i]=0; FFC(i,1,n)FFC(j,1,n) if(a[i]==b[j])dp[i%2][j]=dp[(i-1)%2][j-1]+1; else dp[i%2][j]=dp[(i-1)%2][j]>dp[i%2][j-1]?dp[(i-1)%2][j]:dp[i%2][j-1]; } int main(){ while(~scanf("%d",&n)){ scanf("%s",a+1); for(int i=1,j=n;i<=n;i++,j--)b[j]=a[i]; fuck(); printf("%d\n",n-dp[n%2] ); } return 0; }View Code
相关文章推荐
- 第10章 Android的消息机制
- hdu_1513_Palindrome(LCS+滚动数组)
- C++中 模板Template的使用
- Android中利用Matrix实现图片平移、缩放和旋转
- 子类继承和调用父类的构造方法
- linux命令(38):traceroute命令
- 深圳女教师遭滴滴司机劫杀
- 深圳女教师遭滴滴司机劫杀
- Python的学习笔记(三)(文件处理)
- 大数据场景下linux双网卡bond接入实践
- 13、JavaScript进度条的实现
- 20145327实验五 Java网络编程
- LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别
- 20145324 Java实验五
- Nginx 我们必须知道的那些事 推荐
- <Android 应用 之路> 聚合数据SDK
- <Android 应用 之路> 聚合数据SDK
- 杭电 1106
- SDUT 3437 排序算法
- ZOJ 2059 The Twin Towers(双塔DP)