Palindrome(补全回文串+最长公共子序列的应用)hdu1513+poj1159+动态规划

2023-11-09

Palindrome

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4277    Accepted Submission(s): 1462


Problem Description
A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the minimal number of characters to be inserted into the string in order to obtain a palindrome. 

As an example, by inserting 2 characters, the string "Ab3bd" can be transformed into a palindrome ("dAb3bAd" or "Adb3bdA"). However, inserting fewer than 2 characters does not produce a palindrome.
 

Input
Your program is to read from standard input. The first line contains one integer: the length of the input string N, 3 <= N <= 5000. The second line contains one string with length N. The string is formed from uppercase letters from 'A' to 'Z', lowercase letters from 'a' to 'z' and digits from '0' to '9'. Uppercase and lowercase letters are to be considered distinct.
 

Output
Your program is to write to standard output. The first line contains one integer, which is the desired minimal number.
 

Sample Input
  
  
5 Ab3bd
 

Sample Output
  
  
2
 

Source
 

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513

题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符
思路:先求出正反串的最长公共子序列,然后剩下的两边加上就ok了。(以最长公共子序列为中心)

这里特别注意1000以上都需要要滚动数组,应该不然会超内存的。


#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
int map[2][5005];//利用滚动数组
string str;
/***
题意:给出一个字符串,问要将这个字符串变成回文串要添加最少几个字符
思路:先求出正反串的最长公共子序列,然后剩下的两边加上就ok了。(以最长公共子序列为中心)
*/
void LCS(int &len1,int &len2)
{
    for(int i=0;i<=len1;i++)
    {
        for(int j=0;j<=len2;j++)
        {
            if(i==0||j==0) {map[i%2][j]=0; continue;}
            if(str[i-1]==str[len2-j]){ map[i%2][j]=map[(i-1)%2][j-1]+1;}
            else if(map[(i-1)%2][j]>=map[i%2][j-1]){ map[i%2][j]=map[(i-1)%2][j];}
            else { map[i%2][j]=map[i%2][j-1]; }
        }
    }
}
int main()
{
    int n;
    while(cin>>n)
    {
        cin>>str;
        LCS(n,n);
        int ans=map[n%2][n];
        cout<<n-ans<<endl;
    }
    return 0;
}

/*
5
Ab3bd
6
Ab34bd
5
Abb3f
*/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Palindrome(补全回文串+最长公共子序列的应用)hdu1513+poj1159+动态规划 的相关文章

  • CF 7D Palindrome Degree

    传送门思路参考代码 传送门 思路 不是马拉车加随便 DP 乱搞 xff1f 本来想复习一下马拉车的 xff0c 结果拉出了许多事端 xff08 修复了 OI Learner Judge 的严重 bug 一个害我调了两节课的 bug xff0
  • 131. Palindrome Partitioning

    文章目录 1 题目理解2 回溯3 动态规划 1 题目理解 输入 xff1a 字符串s 规则 xff1a 将字符串s分割 xff0c 分割后每一个部分都是一个回文串 输出 xff1a 所有的分割方式 Example 1 Input s 61
  • 9. Palindrome Number

    Palindrome Number Easy Determine whether an integer is a palindrome An integer is a palindrome when it reads the same ba
  • palindrome-partitioning

    题目 xff1a 给定一个字符串s xff0c 分割s使得s的每一个子串都是回文串 返回所有的回文分割结果 例如 给定字符串s 61 aab 返回 aa b a a b Given a string s partition s such t
  • 【栈排序】对栈进行排序使最小元素位于栈顶

    试题来源 程序员面试金典 https leetcode cn com problems sort of stacks lcci 栈排序 编写程序 对栈进行排序使最小元素位于栈顶 最多只能使用一个其他的临时栈存放数据 但不得将元素复制到别的数
  • 添加最少数量的字符来形成回文

    问题 给定任何字符串 添加尽可能少的字符 使其在线性时间内成为回文 I m only able to come up with a O N2 solution 有人可以帮我解决 O N 问题吗 恢复字符串 使用修改过的高德莫里斯普拉特查找最
  • 使用 JavaScript 进行递归回文检查

    我试图使用 javascript 通过递归来找出字符串是否是回文 但我无法弄清楚代码中缺少什么 var firstCharacter function str return str slice 0 1 var lastCharacter f
  • Python 回文

    所以我的任务是查看并检查正整数是否是回文 我已经正确完成了所有工作 但在最后的部分需要帮助 从用户给出的回文中生成一个新的回文的任务 我的 while 循环走在正确的轨道上还是应该使用其他东西 所以结果是如果你输入 192 它会返回Gene
  • 回文检查的递归方法

    是否可以使用以下参数列表定义回文检查的递归方法 int testPalindromeRecursive char str int len 注意 不必使用外部子函数或全局变量 我认为这是不可能的 因为你必须以某种方式记住最后一个 前面 索引位
  • 使用 Java 的回文测试器,忽略空格和标点符号

    我已经编写了程序 直到它必须忽略线程中的标点符号和空格 我想知道是否有人可以帮助我编码 我一直在尝试的似乎不起作用 这是我到目前为止所拥有的 import java util Scanner public class PalindromeT
  • 如何使用 Python 逻辑检查回文

    我正在尝试用 Python 检查回文 我的代码非常for 循环密集 在我看来 人们从 C 转向 Python 时犯的最大错误是尝试使用 Python 实现 C 逻辑 这使得事情运行缓慢 而且没有充分利用该语言 我看到this网站 搜索 C
  • 下一个更高的素数和回文数

    是否有关于从给定的整数中求解下一个更高的素数和回文数的建议 这是我正在尝试的片段 但它有点慢 请建议我是否有任何好的算法可以测试 usr bin python def next higher n while True s str n if
  • 一种更好的算法来查找数字字符串的下一个回文

    首先这里有一个问题 如果从左到右和从右到左读取的正整数在十进制系统中的表示相同 则该正整数称为回文 对于给定的不超过1000000位的正整数K 将大于K的最小回文数的值写入输出 显示的数字始终不带前导零 输入 第一行包含整数 t 即测试用例
  • 如何计算java中相同(PALINDROME)的单词数

    我是一名 Java 开发新手 我想用Java编写代码来计算段落中回文词的数量 假设是 用户可以输入包含尽可能多的句子的段落 每个单词之间以空格分隔 每个句子之间以句点分隔 单词前后的标点符号将被忽略 而单词内部的标点符号将被计算在内 输入示
  • C语言的回文程序

    我的 C 程序是回文 其功能有错误 我的函数不是比较字符串中的 2 个字符 当我输入单个字符时 它会回答回文 但如果是两个或更多字符 则始终不是回文 Code int IntStrlength strlen StrWord int IntC
  • Python 回文程序无法运行

    我用 python 编写了一个简单的程序 它检查句子是否是回文 但我不明白为什么它不起作用 结果始终为 False 有谁知道出了什么问题吗 def isPalindrome word Removes all spaces and lower
  • 从文本文件打印所有回文

    我看了这个问题 BASH 回文检查器 https stackoverflow com questions 26601234 bash palindrome checker 这就是该线程中问题答案所显示的内容 grep E a z 3 45
  • 递归函数:检查 Java 中的回文数

    我有一个类检查字符串是否是回文 我有两个问题 1 这是检查回文的最有效方法吗 2 这可以递归实现吗 public class Words public static boolean isPalindrome String word Stri
  • 检查一个数字是否是回文数

    我尝试使用以下代码检查一个数字是否是回文 unsigned short digitsof unsigned int x unsigned short n 0 while x x 10 n return n bool ispalindrome
  • 优化两个三位数乘积的最大回文数?

    我正在研究一个面试问题 我被问到这个问题 我应该编写一个程序 从两个三位数的乘积中找到最大的回文数 这里是question https projecteuler net problem 4 我想出了这种从底部开始的蛮力方法 public c

随机推荐

  • VLP-16 velodyne + kinect dk 复现 LeGO-LOAM

    参考 使用自己的激光雷达 数据集运行lego loam 修改代码教程 和道一文字 的博客 CSDN博客 LeGO LOAM 编译安装与运行 Yeah2333的博客 CSDN博客 lego loam运行 一 配置VLP16 sudo apt
  • Inkscape插入LaTeX公式

    Inkscape插入LaTeX公式 Inkscape软件自身没有插入公式的功能 在一些需要公式配合的图片 Inkscape无法正常制图 为了解决该问题 本文采用Inkscape中安装TexText扩展的方法 使得Inkscape在制图过程中
  • 在阿里云的生产环境下:nginx同一域名下配置多个静态页面

    背景说明 这两天公司前端开发工程师提出要求 在公司的主业务域名中加一个静态页面进去 在这里我就不透露公司的域名是什么 我们把域名估且为www ganbing com 这种需求很多公司是经常有的 写一个重定向啊 加个静态页面啊 实现跨域访问啊
  • java的值传递

    java中只有值传递 1 对于基本数据类型 改变形参的值不会影响实参的值 2 对于引用类型 改变形参的值会不会影响实参的值 这个我们得分情况 情况1 修改的是形参的指向的话就不改变原来实参的值 情况2 修改的是形参的值的话就会改变原来实参的
  • 使用three.js渲染第一个场景和物体

    一 效果图 二 渲染场景和物体的步骤 创建场景 Scene 在 three js 中创建场景通过调用 THREE Scene 方法 然后将其赋值给变量 var scene new THREE Scene 创建相机 Camera 在 thre
  • ThreadLocal与InheritableThreadLocal及线程池的影响

    在web开发中使用了ThreadLocal本地线程存储拦截器解析的用户信息 方便在下文代码中调用 但是在springboot中使用 Async开启异步操作时 就会造成 子线程无法拿到父本地线程数据 拿到一些脏数据 1 Inheritable
  • 为什么超凡先锋显示未选择服务器,超凡先锋画质不太流畅怎么弄 游戏画质设置方法介绍_超凡先锋...

    超凡先锋是一款逃离塔科夫玩法的射击游戏 这款游戏对玩家的手机配置需求还是比较高的 那么超凡先锋画质不太流畅怎么弄呢 下面我们就一起来看一下游戏画质设置方法介绍吧 一 画质设置步骤介绍 超凡先锋的优化制作的还是非常不错的 大家如果配置不足或者
  • c语言求阶乘和的流程图_Introduction to CSAPP(十四):流程控制指令与 C 语言条件判断与循环

    条件码 在之前的内容中 我们提到EFLAGS 寄存器中有一些条件码 这些条件码为流程控制的跳转提供了一定的能力 CF 进位标识 最近的操作使得最高位产生的了进位 ZF 零标识 最近的操作所得的结果为0 SF 符号标识 最近的操作所得的结果为
  • 。。。闯关

    还没写到难的地方 不过主要还是猜 前面过于简单后面感觉又太难 不太适合我这种菜鸟 不过还是可以学到东西的 先不写了 这里只是帮我简单记录一下思路 并非想破坏游戏体验 1 url 2 源码链接 3 源码链接 4 源码最底下或F12 5 根据提
  • idea远程调试线上jar包

    有时候本地代码没问题但在线上运行会报错 这时候可以使用idea的remote功能调试线上jar包 步骤1 步骤2 新建remote 步骤3 配置服务器ip和端口 并复制生成的JVM参数供之后使用 步骤4 打jar包 并将生成的jar包放到服
  • GPT-4:模型架构、训练方法与 Fine-tuning 详解

    本文将详细介绍 GPT 4 的模型结构 训练数据准备和微调方法 我们将深入了解 Transformer 架构 并学习如何准备训练数据和微调 GPT 4 模型 同时 我们还提供了相关代码示例以帮助您更好地理解和实践这些概念 希望本文能为您在使
  • Java EE 企业级应用 复习 Spring中Bean的管理

    Bean的实例化 什么是Bean的实例化 Spring容器自动地帮助我们生成对应的Bean对象 Bean的实例化方法 构造方法实例化 静态工厂实例化 实例工厂实例化 构造方法实例化 package com itheima public cl
  • http-server安装成功后,提示command not found

    版权声明 本文为博主原创文章 未经博主允许不得转载 http server安装成功后 提示command not found 如图所示 解决方法 执行vim zshrc 加上红框框住的内容 然后在项目目录下执行http server就可以了
  • 操作系统-在分页式管理方式下采用位示图来表示主存分配情况,实现主存空间的分配和回收。

    实验六 一 实验题目 在分页式管理方式下采用位示图来表示主存分配情况 实现主存空间的分配和回收 二 实验内容 1 分页式存储器把主存分成大小相等的若干块 作业的信息也按块的大小分页 作业装入主存时可把作业的信息按页分散存放在主存的空闲块中
  • UIUC同学Jia-Bin Huang收集的计算机视觉代码合集(ZZ)

    转自 http www cnblogs com idaidai archive 2012 03 01 2375800 html UIUC的Jia Bin Huang同学收集了很多计算机视觉方面的代码 链接如下 https netfiles
  • django2.x报错No module named 'django.core.urlresolvers'

    解决方法就是 from django urls import reverse 最近从django1 9迁移到django2 0中出现一个意外的报错 这个报错的原因在stack overflow上有很直接的解释 但是百度上并没有直接的答案 简
  • 华为OD机试真题--解压原始报文JavaScript

    1 题目 为了提升数据传输的效率 会对传输的报文进行压缩处理 输入一个压缩后的报文 请返回它解压后的原始报文 压缩规则 n str 表示方括号内部的 str 正好重复 n 次 注意 n 为正整数 0 lt n lt 100 str只包含小写
  • Python 字符串Ⅱ

    Python 字符串格式化 Python 支持格式化字符串的输出 尽管这样可能会用到非常复杂的表达式 但最基本的用法是将一个值插入到一个有字符串格式符 s 的字符串中 在 Python 中 字符串格式化使用与 C 中 sprintf 函数一
  • Python之算法与时间复杂度

    目录 一 算法的概念 1 1 算法是计算机处理信息的本质 二 时间复杂度T n 2 1 程序执行的基本操作与时间复杂度 2 3 大O记法 2 4 常见时间复杂度 2 5 时间复杂度的几条基本计算规则 重点 2 6 python内置类型时间复
  • Palindrome(补全回文串+最长公共子序列的应用)hdu1513+poj1159+动态规划

    Palindrome Time Limit 4000 2000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 4277 Accepted S