回文字符串(51Nod-1092)
题目
回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。每个字符串都可以通过向中间添加一些字符,使之变为回文字符串。
例如:abbc 添加2个字符可以变为 acbbca,也可以添加3个变为 abbcbba。方案1只需要添加2个字符,是所有方案中添加字符数量最少的。输入
输入一个字符串Str,Str的长度 <= 1000。
输出
输出最少添加多少个字符可以使之变为回文字串。
输入样例
abbc
输出样例
2
思路:由于要找最少添加的字符使得原字符串变为回文串,那么先将给出的字符串反转,将两字符串做 LCS,得到的是最大的公共子串的长度,那么用字符串长度减去最大公共子串长度就是最少添加字符的个数
源程序
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define PI acos(-1.0)
#define E 1e-12
#define INF 0x3f3f3f3f
#define LL long long
const int MOD=1000000007;
const int N=1000+5;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;
char str[N];
char reStr[N];
int dp[N][N];
int main() {scanf("%s",str+1);int len=strlen(str+1);for(int i=1,j=len; i<=len+1; i++,j--) {reStr[j]=str[i];}for(int i=1; i<=len; i++) {for(int j=1; j<=len; j++) {if(str[i]==reStr[j]) {dp[i][j]=dp[i-1][j-1]+1;} else {dp[i][j]=max(dp[i][j-1],dp[i-1][j]);}}}int res=len-dp[len][len];printf("%d\n",res);return 0;
}
回文字符串(51Nod-1092)相关推荐
- 1092 回文字符串(51nod)
原题链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092 这题其实可以把字符串str反转一下然后再求两个字符串的最 ...
- 51nod 1092 回文字符串【LCS】
1092 回文字符串 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符 ...
- 51nod 1092 回文字符串
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间 ...
- C语言判断回文字符串
C语言判断回文字符串 #include<stdio.h> char *huiwen(char *str){int i, j,t=0;for(i = 0,j = strlen(str) - ...
- NYOJ 回文字符串
回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然, ...
- java判断回文字符串几种简单的实现
11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进 ...
- 题目1192:回文字符串
题目描述: 给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的. 输入: 输入包括一行字符串,其长度不超过1000. 输出: 可能有多组测试数据,对于每组数据,如果是回文字符串 ...
- 判断字符串_python实现--判断回文字符串、回文链表、回文数
所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构Python系列教程,免费获取,遇到bug及时反馈, ...
- Palindrome(插入字符变成回文字符串)
题目:给定一个字符串,问最少插入多少字符,使字符串变成回文字符串. 思路:X:原字符串 Y:逆字符串 需要插入的字符数=X的长度-(X与Y的LCS的长度) 这里使用了滚动数组,压缩空间,原因: ...
- codevs1520 回文字符串
题解 题目描述 Description 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如: aba kllkllk tyyt 都是. 当然,我们给你的问题不会再简单到判断一个字 ...
最新文章
- 深度残差收缩网络:借助注意力机制实现特征的软阈值化
- SIMD学习 -- 用SSE2指令作点乘和累加计算
- Hadoop 05_MapReduce1.0
- ASP.NET Core中的内存缓存
- vue 子组件更新父组件状态 使用sync
- 2038: [2009国家集训队]小Z的袜子(hose)
- IntelliJ IDEA 编辑器配置vue高亮显示
- error: Please reinstall the libcurl distribution - easy.h should be in curl-dir/include/curl/
- ASP.NET设计网络硬盘之两重要类
- 解决ERROR 1044 (42000): Access denied for user
- what's .NET
- 虚拟机如何做服务器系统,sap虚拟机作为服务器(sap系统虚拟机)
- linux关闭防火墙后要重启网络吗,linux 下关闭防火墙方法和单向ping通问题之解决...
- php使用获取mysqlerror时报错Call to undefined function mysql_error()
- 三级数据库知识点学习(五)
- 常见物联网近距离无线通信技术解析
- 一维信号小波阈值去噪
- 013-SpringCloud系列之SpringCloudAlibabaNacos服务注册和配置中心
- 学会Zynq(2)Zynq-7000处理器的配置详解
- odoo用户使用——采购