题目描述

回文词是一种对称的字符串。任意给定一个字符串,通过插入若干字符,都可以变成回文词。此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数。

比如 “Ab3bd”插入2个字符后可以变成回文词“dAb3bAd”或“Adb3bdA”,但是插入少于2个的字符无法变成回文词。

注:此问题区分大小写

输入输出格式

输入格式:

一个字符串(0<strlen<=1000)

输出格式:

有且只有一个整数,即最少插入字符数

输入输出样例

输入样例#1: 复制

Ab3bd

输出样例#1: 复制

2

题解:

回文字符串特点:正着读和倒着读都是一样的

既然这样是不是可以把原序列正着当作一个序列,倒着当作另一个序列,求出来他们的最长公共子序列,再减去序列长度

感觉好像没有什么了,那就上代码吧:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 int dp[1005][1005];
 7 int main()
 8 {
 9     char q[1005],w[1005];
10     scanf("%s",q);
11     int n=strlen(q),m=0;
12     for(int i=n-1;i>=0;--i)
13     {
14         w[m++]=q[i];
15     }
16     for(int i=0;i<n;++i)
17     {
18         for(int j=0;j<n;++j)
19         {
20             if(q[i]==w[j] && i>0 && j>0) dp[i][j]=dp[i-1][j-1]+1;
21             else if(q[i]==w[j] && (i<=0 || j<=0)) dp[i][j]=1;
22             else if(i>0 && j>0 && q[i]!=w[j]) dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
23             else if(i>0 && j<=0 && q[i]!=w[j]) dp[i][j]=dp[i-1][j];
24             else if(i<=0 && j>0 && q[i]!=w[j]) dp[i][j]=dp[i][j-1];
25             else dp[i][j]=0;
26         }
27     }
28     printf("%d\n",n-dp[n-1][n-1]);
29 }

View Code

转载于:https://www.cnblogs.com/kongbursi-2292702937/p/11026583.html

P1435 回文字串(DP)相关推荐

  1. 力扣回文字串的动态规划解法

    1,求字符串中,回文子串的个数 647. 回文子串 :给定一个字符串,你的任务是计算这个字符串中有多少个回文子串.具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串.求回文 ...

  2. 美团/力扣(647)--回文字串

    美团/力扣(647)–回文字串 文章目录 美团/力扣(647)--回文字串 一.题目描述 二.分析 方法一:中心扩散 代码一: 方法二:DP 代码二: 一.题目描述 力扣: 美团: 兄弟们!刷题的重要 ...

  3. 求字符串的最长回文字串 O(n)

    昨天参加了某公司的校园招聘的笔试题,做得惨不忍睹,其中就有这么一道算法设计题:求一个字符串的最长回文字串.我在ACM校队选拔赛上遇到过这道题,当时用的后缀数组AC的,但是模板忘了没写出代码来. 回头我 ...

  4. 信息学奥赛一本通 2044:【例5.12】回文字串

    [题目链接] ybt 2044:[例5.12]回文字串 [题目考点] 1.遍历字符串的一半 如果字符串长度为len,那么len/2指向中间或中间偏左的位置. 如图: 如果将遍历的循环过程写为: for ...

  5. 信息学奥赛一本通(2044:【例5.12】回文字串)

    2044:[例5.12]回文字串 http://ybt.ssoier.cn:8088/problem_show.php?pid=2044 时间限制: 1000 ms         内存限制: 655 ...

  6. leetcode系列--5.最长回文字串

    leetcode系列–第5题.最长回文字串 给你一个字符串 s,找到 s 中最长的回文子串. 子串和子序列的区别: 子串:子串是指一个字串中连续的字串 子序列:子序列是指一个字串中非连续的字串 输入: ...

  7. 回文字串-字符串哈希

    回文子串-字符串哈希 前言 求解回文字串问题不仅可以用马拉车算法 ( O ( n ) ) (O(n)) (O(n)),也可以用字符串哈希 ( O ( n l o g n ) ) (O(nlogn)) ...

  8. 力扣HOT100算法题5:最长回文字串

    文章目录 一.题目 二.方法一:解题思路 三.方法一:代码解析 四.方法二:动态规划 五.方法二:代码解析 一.题目 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1:输入:s = &quo ...

  9. POJ1159 回文串DP与MTE,滚动数组

    题意: 输入一串字符串,插入一些字符使这个字符串变成回文串,求插入字符个数的最小值 要点: 可以这么看,设字符串为C1,C2,C3--Cn,如果C1==Cn,那么只要再考虑C2是否等于Cn-1即可,如 ...

最新文章

  1. scala学习笔记-过程、lazy值和异常(6)
  2. Codeforces Round #742 (Div. 2) E. Non-Decreasing Dilemma (线段树维护区间连续问题)
  3. [register]-04-ARMv8的寄存器简介和总结
  4. vs.net 中编译链接vc工程时的LNK171@mspdb140.dll错误处理
  5. uml 类图聚合与组合
  6. 九九乘法表代码口述_利用随机函数实现座次表的随机排座
  7. Linux操作系统监视NVIDIA的GPU使用情况
  8. CDOJ 1803 绿帽自动机 思维题
  9. spring-注解实现入门
  10. 380天!理想汽车交付量突破30000辆
  11. MFC将bmp图像设为背景
  12. XP-SP3 安装之后怎么禁止更新
  13. java中typeof_深入剖析JavaScript中的数据类型判断(typeof instanceof prototype.constructor)...
  14. mysql数据库连接失败_mysql数据库连接失败是什么原因
  15. python练手程序之猜大小
  16. 【Ubuntu系统】ubuntu18.04磁盘空间满了无法进入系统(3种方式,已解决)
  17. (三)音视频:解析H264 SPS 更进一步理解H264
  18. c语言二级指针与二维数组
  19. UE4材质—UV和贴图坐标系
  20. 关于Sun公司的SCJP认证

热门文章

  1. EJB学习(四)——Enterprise Bean(企业Bean)和Entity Bean(实体Bean)
  2. 2、ACE-实用生活口语-介绍 Introductions
  3. Swift中关于可选类型(?)与强制解析(!)的特性
  4. Oracle 11g Data Guard 使用duplicate from active database 创建 standby database
  5. 给别人电脑永远设置个别人删不掉的管理员用户
  6. php vo,$vo.id php
  7. 为什么古人如此的注重天文学
  8. 小米MixPath复现之旅
  9. 一步一步学Silverlight 2系列(9):使用控件模板
  10. 最新Ceph L版与openstack Pike对接