#include<iostream>
#include<cstdio>
using namespace std;
int n,f[5002][5002];
char str1[5002],str2[5002];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>str1[i];
str2[n+1-i]=str1[i];//反过来赋值比较
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(str1[i]==str2[j])
{
f[i][j]=f[i-1][j-1]+1;//动态转移方程
}
if(str1[i]!=str2[j])
{
f[i][j]=max(f[i-1][j],f[i][j-1]);//动态转移方程
}
}
}
cout<<n-f[n][n];
}

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

输入格式
文件的第一行包含一个整数N,表示给定字符串的长度(3≤N≤5000)。

文件的第二行是一个长度为N的字符串。字符串仅由大写字母“A”到“Z”,小写字母“a” 到“z”和数字“0”到“9”构成。大写字母和小写字母将被认为是不同的。

输出格式
文件只有一行,包含一个整数,表示需要插入的最少字符数。

样例
样例输入
5
Ab3bd
样例输出
2
我也不知道怎么就过了,看解析吧
解析:
  都明白回文词啥意思吧(要不然你就去百度),直接寻找正反两个字符串的最长子序列长度。拿总长度去减这个,输出。
  定义两个数组:str1(直接读),str2(把s倒过来)
  两个循环i(1-n),j(1-n)。
  动态转移方程
       0(i==0||j==0)(其实用上面的循环就可以省去了)
  f[i][j]        max(f[i-1][j],f[i][j-1])(si!=ti)(只跳过一个字母)
       f[i-1][j-1]+1(si==ti)(长度+1)



回文词——线性dp的更多相关文章

  1. (最长回文子串 线性DP) 51nod 1088 最长回文子串

    输入一个字符串Str,输出Str里最长回文子串的长度. 回文串:指aba.abba.cccbccc.aaaa这种左右对称的字符串. 串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符 ...

  2. 经典DP模型--回文词--IOI2000

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

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

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

  4. CSU 1328: 近似回文词

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

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

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

  6. csuoj 1328: 近似回文词

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

  7. 401 Palindromes(回文词)

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

  8. 回文词_KEY

    回文词 (palin.pas/c/cpp) [问题描述] 回文词是一种对称的字符串--也就是说,一个回文词,从左到右读和从右到左读得的结果是一样的.任意给定一个字符串,通过插入若干字符,都可以变成一个 ...

  9. [BZOJ4044]Virus synthesis 回文自动机的DP

    4044: [Cerc2014] Virus synthesis Time Limit: 20 Sec  Memory Limit: 128 MB Description Viruses are us ...

随机推荐

  1. 1151 LCA in a Binary Tree (30point(s))

    The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U ...

  2. OAuth 2.0、OIDC 原理

    OAuth 目录 OAuth 什么是 OAuth? 为什么是 OAuth? SAML OAuth 和 API OAuth 主要组件 OAuth 作用域 OAuth 参与者 OAuth 令牌 OAuth ...

  3. 【SpringMVC配置失效】Springboot2.x拦截器配置不无生效

    一.环境 maven springboot版本2.x <parent> <groupId>org.springframework.boot</groupId> &l ...

  4. c++ 第三方库收集

    1.boost 这个使用的人多不多说了 2.pthread windows下的posix线程实现 3.libcurl 一个有名的开源网络爬虫库 阿里旺旺中使用到了 4.libeay32 OpenSSL ...

  5. 编译libdvm.so: makefile,mm

    操作系统:Ubuntu14.4 android版本:4.4 设备:nexus 5 android系统的编译使用make来操作,那make呢是执行对应的makefile即android的编译系统看mak ...

  6. POJ1679判断最小生成树的唯一性

    题意:      判断最小树是否唯一. 思路:      我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生 ...

  7. web技术培训(一)-云服务器、域名相关

    云服务器 什么是云服务器(这部分可以跳过) 云服务器(Elastic Compute Service, ECS)是一种简单高效.安全可靠.处理能力可弹性伸缩的计算服务.其管理方式比物理服务器更简单高效 ...

  8. aspnetcore 应用 接入Keycloak快速上手指南

    登录及身份认证是现代web应用最基本的功能之一,对于企业内部的系统,多个系统往往希望有一套SSO服务对企业用户的登录及身份认证进行统一的管理,提升用户同时使用多个系统的体验,Keycloak正是为此种 ...

  9. vuex、localStorage、sessionStorage之间的区别

    vuex存储在内存中,localStorage以文件形式存储在本地,sessionStorage针对一个session(阶段)进行数据存储. 当页面刷新时vuex存储的数据会被清除,localStor ...

  10. 容器进阶:OCI与容器运行时

    Blog:博客园 个人 什么是容器运行时(Container Runtime) Kubernetes节点的底层由一个叫做容器运行时的软件进行支撑,它负责比如启停容器 这样的事情.最广为人知的容器运行时 ...