当前位置: 首页 > news >正文

算法题(227):回文字符串

审题:

本题需要我们找出将给定字符串变为回文字符串的最少插入字符数

思路:
方法一:动态规划

我们可以先分析某个子区间的最少插入字符数,然后递推到最终整个字符串的最少插入字符数

(1)状态表示:

f[i][j]表示在左端点为第i个字符,右端点为第j个字符的区间内,将该区间字符串变为回文串的最少插入字符数

(2)状态转移方程:
可以分为两种情况

一种是当前左右端点已经相等,只需要找到将左右端点内的区间变为回文串的最少插入个数另一种是当前左右端点不相等,需要分为左端点前加字符和右端点后加字符两种情况

(3)填表顺序:

区间dp的遍历方式和其他的dp问题有不同,他有自己独特的遍历方式

第一层for循环:让区间长度len从1~n遍历

第二层for循环:左端点从2~(i+len-1)遍历

第一层for循环解释:

可以保证f[i][j]更新所需的节点已经被更新完,比如求len=5的f[i][j],此时len=4/3/2/1的所有情况都已经被求出来了,而len=5所依赖的节点一定是len<5的,所以一定可以求出结果

第二层for循环解释:
正常来说左端点可以从1~n遍历,但是由于左端点(i)<=右端点(j),所以为了防止j越界,我们要让j(i+len-1)小于等于n,且由于1所依赖的节点是非法节点,可能会出现问题,所以我们从2开始遍历最好(不过本题中非法位置都为0,不影响结果)

(4)初始化:
我们只要初始化len=1的情况就行,而len=1的情况说明只有一个字符,一定是回文串,初始化为0即可

(5)答案输出:
直接输出f[1][n]即可


解题:
 

#include<iostream>
using namespace std;
const int N = 1010;
string s;
int f[N][N];
int main()
{cin >> s;int n = s.size();//填表for (int len = 1; len <= n; len++){for (int i = 2; i + len - 1 <= n; i++){int j = i + len - 1;if (s[i-1] == s[j-1]){f[i][j] = f[i + 1][j - 1];}else{f[i][j] = min(f[i + 1][j], f[i][j - 1]) + 1;}}}//答案输出cout << f[1][n] << endl;return 0;
}

注意:由于我们的状态表示中的i表示第i个字符,而字符串的第i个字符索引是i-1,所以我们需要在判断的时候特殊处理一下

P1435 [IOI 2000] 回文字串 - 洛谷

http://www.dtcms.com/a/449619.html

相关文章:

  • 框架--SpringBoot
  • STM32F103 MPU6500 DMP库姿态解算
  • 使用第三方库
  • 腾讯企业邮箱登录入口app云优化seo软件
  • 【操作系统-Day 40】文件的“身份证”:深入解析文件定义、属性与核心操作
  • 磁共振成像原理(理论)19:基本成像原理 (Basic Imaging Methods) - 三维成像
  • 线程池——线程池
  • WebSocket细谈
  • 公司网站怎么建站微网站如何做微信支付宝支付
  • Ubuntu 原地升级 MongoDB 全攻略
  • 网站变灰色代码安徽省建设工程信息网官网是什么网站
  • Hexo博客搭建系列(四):透明居中导航栏+鼠标悬停放大效果
  • 【STM32项目开源】基于STM32的智能仓库火灾检测系统
  • 陕西省建设监理协会网站证书wordpress 图片外链
  • 做模板网站企业网站类型
  • 24H2壁纸显示错误修复(针对vb.net的紧急加更)
  • 兰州做网站 东方商易怎么样做美术招生信息网站
  • 酒店客房管理系统|基于SpringBoot和Vue的酒店客房管理系统(源码+数据库+文档)
  • AI编程开发系统019-基于Vue+SpringBoot的邮件收发系统(源码+部署说明+演示视频+源码介绍+lw)
  • 做海免费素材网站排版设计模板
  • 212-基于Python的老人健康管理系统
  • 万能格式文件查看工具,支持查看图像、音视频和文档等,免安装超方便!
  • 做食品企业网站的费用wordpress文章图片全屏浏览
  • 韩国免费行情网站的推荐理由外贸 wordpress
  • 嵌入式开发核心知识点详解教程
  • 操作系统应用开发(二十六)RustDesk tls证书不匹配错误—东方仙盟筑基期
  • 如何制作个人网站住建局查询房产信息
  • 西安网站建设hyk123wordpress帖子添加代码
  • 乐理知识学习内容
  • 新手SEO教程:高效提升网站访问量的实用技巧与策略