回文词

ssl 1813

题目大意:

给出一个式子,最少要加多少个字符才能让这个式子是一个“回文词”

原题:

题目描述

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

输入

输入文件的第一行包含一个数N,表示给定字符串的长度(3<=N<=5000)
文件的第二行是一个长度为N的字符串。字符串仅由大写字母,小写字母,和数字构成。大写字母和小写字母被认为是不同的。

输出

输出只包括一行,包含一个整数,表示需要插入的字符数。

样例输入

5
Ab3bd

样例输出

解题思路:

把式子倒着存一遍,然后和正着的做最长公共子序列,再用n减去结果

代码:

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
int n,a[5005][5005];
char b[5005],c[5005];
string str;
int main()
{scanf("%d",&n);getchar();getline(cin,str);str=' '+str;for (int i=1;i<=n;++i){b[i]=str[i];c[i]=str[n-i+1];//反过来存}for (int i=1;i<=n;++i)for (int j=1;j<=n;++j){a[i&1][j]=max(a[i&1][j-1],a[(i+1)&1][j]);if (b[i]==c[j])//相同a[i&1][j]=max(a[i&1][j],a[(i+1)&1][j-1]+1);//滚动数组}printf("%d",n-a[n&1][n]);
}

【DP】回文词 (ssl 1813)相关推荐

  1. CSU 1328: 近似回文词

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

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

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

  3. 动态规划训练5 [回文词]

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

  4. Python利用双端队列判断回文词

    #默认右端为队首 class Deque:def __init__(self):self.items = []def isEmpty(self):return self.items == []def ...

  5. Python双端队列之回文词判定

    双端队列(Deque):由一系列有序的元素组织而成,元素可以从队首或队尾插入.删除. Python自带Deque模块,使用时需引用from collections import deque. 回文词: ...

  6. 队列(queue)与双端队列(deque)—Python实现方法及回文词应用

    队列 Queue 抽象数据类型Queue:一个有次序的数据集合,数据项仅从 尾(rear) 端添加,且仅从 首(front) 端移除,具有 "FIFO" 的特点. 需要实现的操作: ...

  7. POJ 3280 Cheapest Palindrome(DP 回文变形)

    题目链接:http://poj.org/problem?id=3280 题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价 Sample Input 3 4 ...

  8. 【LeetCode 剑指offer刷题】字符串题12:Valid Palindrome(回文词系列)

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Valid Palindrome Given a string, determine if it is a pali ...

  9. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

最新文章

  1. php伪类型,解密PHP伪类型和伪变量的含义
  2. CV之NS之VGG16:基于TF Slim(VGG16)利用七个不同的预训练模型实现快速NS风格
  3. swing JTable 更新数据
  4. GIt本地相关操作(一)
  5. 从零开始构建自己的爬虫代理IP数据库并定期检验IP有效性...
  6. android学习日记13--数据存储之SharedPreference
  7. 外贸用ERP仓储系统有那些好处?
  8. ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码
  9. iphone5信号无服务器,南京苹果维修点告诉你iPhone手机显示无信号、wifi故障该怎么处理?...
  10. 使用EasyCHM破解版制作CHM帮助文档
  11. 看《岭南大医生》羽素与专家共揭痘痘背后的问题
  12. MSP432 BSL流程(UART)
  13. 【精华】PS抠logo技巧
  14. 阿里云云计算工程师ACA认证(Alibaba Cloud Certified Associate - Cloud Computing)考试大纲-V3.0
  15. 用matlab实现理查森外推算法,数值代数理查森外推法
  16. Java多线程的使用方法,Thread,Runnable
  17. Qlikview配置ODBC连接SQL SERVER/ORACLE
  18. PYthon作业通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成。 编写程序,完成以下功能: 输入姓名,若通讯录文件中存在,则讲该联系人信息输出;
  19. 【Java Swing探索之路系列】之二:Java Swing布局面板组件
  20. 【项目】danmu punish启动

热门文章

  1. php去掉查询返回的字段序列,php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回...
  2. leetcode27:移除元素(暴力+双指针)
  3. PHP做二次开发:本机安装ThinkCMF系统
  4. [SpringBoot2]welcomefavicon
  5. [mybatis]Configuration XML_databaseidProvider
  6. [C++STL]deque容器用法介绍
  7. 2019年第十届蓝桥杯国赛B组试题G-排列数-next_permutation枚举,模拟
  8. [蓝桥杯2015初赛]生命之树-求树的最大子树权值和
  9. FFT字符串匹配(解决通配符问题)
  10. 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛) H.有多短 思维