NYOJ 37
2016-07-25 22:19
387 查看
回文字符串
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如”aba”。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
输入
第一行给出整数N(0
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如”aba”。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
输入
第一行给出整数N(0
#include<cstring> #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<queue> #include<vector> using namespace std; #define mod 1000000007 #define PI acos(-1.0) #define INF 0x3f3f3f3f typedef long long LL; int n,lena,lenb; int dp[1005][1005]; string a,b; int main() { scanf("%d",&n); for(int k=1;k<=n;k++){ cin>>a; b=a; reverse(a.begin(),a.end()); lena=a.length(); memset(dp,0,sizeof(dp)); for(int i=1;i<=lena;i++){ for(int j=1;j<=lena;j++){ if(a[i-1]==b[j-1]){ dp[i][j]=dp[i-1][j-1]+1; } else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } printf("%d\n",lena-dp[lena][lena]); } return 0; }
相关文章推荐
- AngularJS Scope(作用域)
- Spring学习笔记
- scala基础23-内部函数
- man命令和history命令的一些小技巧
- JDK和Tomcat环境变量,以及用MyEclipse新建Web Project测试Tomcat Server
- 9月java货车版速记
- ext js layout and tree
- Soot的安装及其初步使用
- android-Notification.BigTextStyle
- **MYSQL** 系列九
- Git使用笔记
- IO操作课程总结及思考
- 关于android程序进入第一个界面出现空白的解决方案
- POJ3668——Frequent values(线段树,RMQ,ST表)
- [OS复习]操作系统综述1
- android-Notification.BigPictureStyle
- DrawerLayout:左右侧拉菜单+NavigationView:导航视图
- 设计模式之装饰设计模式
- HDU-5464-Clarke and problem
- EXT2文件系统简介