有关回文字符串
来源:互联网 发布:linux安装下载好的内核 编辑:程序博客网 时间:2024/06/15 01:44
(1)回文字符串():
输入字符串,求出其中最长的回文字符串(连续的)
样例输入:abccbahjk
样例输出:abccba
从回文字符串的中间位置枚举:
代码如下:
#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ string s; char st[5010]; while(cin.getline(st,5010)) { int max=0,flag=0,i,j; s=st; reverse(s.begin(),s.end()); int m=s.size(); for(i=0;i<m;i++)//枚举回文串的”中间“位置,i即为中间位置 { for(j=0;i-j>=0&&i+j<m;j++)//对奇数的处理 { if(s[i-j]!=s[i+j]) break; if(j*2+1>max) { max=j*2+1; flag=i-j; } } for(j=0;i-j>=0&&i+j+1<m;j++)//对偶数的处理 { if(s[i-j]!=s[i+j+1]) break; if(j*2+2>max) { max=j*2+2; flag=i-j; } } } cout<<max<<endl; for(int k=flag;k<=flag+max;k++) { cout<<s[k]; } cout<<endl; } return 0;}
(2)动态规划(回文字符串)
回文字符串
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
输入
第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000.
输出
每行输出所需添加的最少字符数
样例输入
1
Ab3bd
样例输出
2
来源
IOI 2000
上传者
hzyqazasdf
代码如下:
#include <iostream>#include <cstring>#include <string>#include <algorithm>using namespace std;int dp[1010][1010];int main(){ string s,ss; int N,i,j; cin>>N; while(N--) { cin>>s; ss=s; reverse(s.begin(),s.end()); memset(dp,0,sizeof(dp)); for(i=1;i<=s.size();i++) { for(j=1;j<=s.size();j++) { if(s[i-1]==ss[j-1]) dp[i][j]=dp[i-1][j-1]+1; else if(dp[i-1][j]>=dp[i][j-1]) dp[i][j]=dp[i-1][j]; else dp[i][j]=dp[i][j-1]; } } int k=s.size(); cout<<k-dp[k][k]<<endl;//利用一个邻接表(二维数组)来进行汇文字符串长度的累加
} return 0;}
- 有关回文字符串
- 还是回文 && 回文字符串
- 有关回文数
- 有关回文判断
- 字符串回文
- 回文字符串
- 回文字符串
- 回文字符串
- 回文字符串
- 回文字符串
- 字符串回文
- 回文字符串
- 回文字符串
- 回文字符串
- 回文字符串
- 回文字符串
- 回文字符串
- 回文字符串
- Nuance deadlock on console output redirection.
- 查看电脑综合信息命令
- ajaxJSON数据传递交换/ajaxJSON传对象/解析对象,JAVA封装成对象传到jsp/html页面, ajax中使用JSON
- Junt4 动态代码测试
- 网站优化前期工作是很重要的
- 有关回文字符串
- Android 学习 之 Looper Handler Thread Messahe 多线程
- 类模板与模板类
- C#如何把控件的边框角画为圆弧
- struts2文件和图片上传
- 【91xcz】带你了解Windows PE 是何神器?
- win7 x64手动注册COM
- Linux下多节点SSH无密码互联实现
- 九之再续:教你一步一步用c语言实现sift算法、下