回文词

(palin.pas/c/cpp)

【问题描述】

回文词是一种对称的字符串——也就是说,一个回文词,从左到右读和从右到左读得的结果是一样的。任意给定一个字符串,通过插入若干字符,都可以变成一个回文词。你任务是写一个程序,求出将给定字符串变成回文词所需插入的最少字符数。比如字符串“Ab3bd” ,在插入两个字符后可以变成一个回文词( “dAb3bAd”“Adb3bdA” ) 。然而,插入两个以下的字符无法使它变成一个回文词。

【输入文件】

第一行包含一个整数 N,表示给定字符串的长度,3≤N≤5000

第二行是一个长度为 N 的字符串,字符串由大小写字母和数字构成。

【输出文件】

一个整数,表示需要插入的最少字符数。

【输入样例】

5

Ab3bd

【输出样例】

2

说实话,第一次看到这道题真没想出来标算,感觉无计可施,经Teachar_Fu提醒过后,才幡然醒悟。

仔细看样例,我们要求的是回文串,所以将它翻转过后会是什么样的呢?如下:

可以看出最长公共部分的长度为3,即需要插入的字符长度为2。这让我们想到一个算法,不是只需要求出原串与翻转串的最长公共子序列的长度x,然后用串长度len-x即为答案。

code

#include <cstdio>
#include <iostream>
using namespace std;
int n,ans,f[][];
char s[],k[];
inline int max(int x,int y){return x>y?x:y;}
int main(){
freopen("palin.in","r",stdin);
freopen("palin.out","w",stdout);
scanf("%d\n",&n);
for(int i=;i<=n;i++)s[i]=getchar(),k[n-i+]=s[i];
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(s[i]==k[j]){
f[i][j]=f[i-][j-]+;
}
else f[i][j]=max(f[i-][j],f[i][j-]);
}
}
printf("%d",n-f[n][n]);
return ;
}

回文词_KEY的更多相关文章

  1. CSU 1328: 近似回文词

    省赛的A题...现场都没什么人做...其实就一暴力水题......坑死了... 1328: 近似回文词 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1 ...

  2. 字符串 - 近似回文词 --- csu 1328

    近似回文词 Problem's Link:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 analyse: 直接暴力枚举每一个终点,然后枚举 ...

  3. csuoj 1328: 近似回文词

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 1328: 近似回文词 Time Limit: 1 Sec  Memory Limit: 1 ...

  4. 401 Palindromes(回文词)

      Palindromes  A regular palindrome is a string of numbers or letters that is the same forward as ba ...

  5. Vijos1327回文词【动态规划】

    回文词 回文词是一种对称的字符串--也就是说,一个回文词,从左到右读和从右到左读得到的 结果是一样的.任意给定一个字符串,通过插入若干字符,都可以变成一个回文词.你的任务是写 一个程序,求出将给定字符 ...

  6. 回文词 (Palindromes,Uva401)

    例题 3-3 回文词 (Palindromes,Uva401) 输入一个字符中,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有 ...

  7. csu-1328 近似回文词 和 最长回文字符串

    原博文地址:http://blog.csdn.net/u012773338/article/details/39857997 最长回文子串 描述:输入一个字符串,求出其中最长的回文子串.子串的含义是: ...

  8. CSU 1328 近似回文词【最长回文字符串(三种方法)】

    输入一行文本,输出最长近似回文词连续子串.所谓近似回文词是指满足以下条件的字符串: 1. S以字母开头,字母结尾 2. a(S)和b(S)最多有2k个位置不同,其中a(S)是S删除所有非字母字符并且把 ...

  9. 【u230】回文词

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] CR喜欢研究回文词,有天他发现一篇文章,里面有很多回文数,这使他来了兴趣.他决定找出所有长度在n个字节 ...

随机推荐

  1. GCC和G++区别

    原文:http://www.cnblogs.com/samewang/p/4774180.html 看的Linux公社的一篇文章,觉得不错,内容复制过来了. 其实在这之前,我一直以为gcc和g++是一 ...

  2. jmeter系列------参数关联

    接口请求中的一个变量需要用上一个接口道服务器返回响应的动态值(上个请求). 遇到这样的情况,我们就需要用到关联 例如用户A发表了一个一条微信朋友圈,用户B想对这条朋友圈进行评论,就需要先获取到这个朋友 ...

  3. C#多线程的用法7-线程间的协作ManualResetEvent

    ManualResetEvent:手动重置事件,它用于线程间同步时用法非常简单也易于理解. private static void MultiThreadSynergicWithManualReset ...

  4. leetcode 001 Two Sun

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  5. js学习--变量作用域和作用域链

    作为一名菜鸟的我,每天学点的感觉还是不错的.今天学习闭包的过程中看到作用域与作用域链这两个概念,我觉得作为一名有追求的小白,有必要详细了解下. 变量的作用域 就js变量而言,有全局变量和局部变量.这里 ...

  6. 再起航,我的学习笔记之JavaScript设计模式19(状态模式)

    状态模式 概念介绍 状态模式(State):当一个对象的内部状态发生改变时,会导致其行为的改变,这看起来像是改变了对象 示例演示 在我们写项目的过程中或多或少会遇到如下的多分支判断 function ...

  7. sql执行机制

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp38 sql执行机制 1.对于普通的sql语句只有where条件的执行机制 ...

  8. poj 1882完全背包变形

    题意:给出一个上限硬币数量s,给出n套硬币价值,求一套硬币能用不大于s数量的硬币组成从1开始连续的区间价值,其中,如果其最大值相同,输出数量小的和价值小的. 思路:很明显的完全背包,纠结后面最大值相同 ...

  9. .net core的在初始化数据的拦截处理

    本人初接触 .net core 如有不对的地方,请大家随时指正,共同学习. 首先说明,此案例是基于.net core1.0版本的,对于2.0好多的功能已经升级,例如:一些常用的dll已经在框架中存在, ...

  10. 2016-2017-2 《Java 程序设计》课堂实践项目

    目录 基本工具 基础内容 Hello World 和 模块分解 数组的使用 命令行参数 递归 分支语句 String类的使用 类的定义与测试 多态 IO与异常 数据库 网络与安全 数据结构应用 And ...