
SSL1813回文词
发布日期:2021-05-07 09:38:35
浏览次数:20
分类:精选文章
本文共 1493 字,大约阅读时间需要 4 分钟。
要解决给定字符串变成回文所需插入的最小字符数的问题,可以采用动态规划的方法计算最大公共子序列(MPS),然后根据公式计算每个中心点的最小插入数。
步骤说明:
初始化MPS表:创建一个二维数组 o
,其中 o[i][j]
表示前 i
个字符和后 j
个字符的最大公共子序列长度。
填充MPS表:使用双重循环计算每个 o[i][j]
,如果当前字符相等则递归加1,否则取左右两边的最大值。
计算每个中心点的插入数:对于每个中心点 i
,计算对应的 o[i][n-i-1]
,然后代入公式 f[i] = n - 1 - 2 * o[i][n-i-1]
。
找出最小插入数:遍历所有中心点,找出最小的 f[i]
,即为所需的最小插入数。
代码实现:
#include#include #include #include
解释:
MPS表初始化:o
是一个二维数组,用于存储前 i
个字符和后 j
个字符的最大公共子序列长度。
填充MPS表:通过双重循环遍历字符串,计算每个位置的 o[i][j]
,如果字符匹配则递归计算,否则取最大值。
计算插入数:对于每个中心点 i
,计算其对应的 o[i][n-i-1]
,代入公式得到需要插入的字符数 f[i]
。
遍历找出最小值:遍历所有中心点,找到最小的插入数 mn
,输出即为答案。
该方法通过动态规划有效地计算了最小插入数,适用于长度较大的字符串,确保了时间复杂度在合理范围内。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月25日 11时48分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MSSQL 2005 数据库变成可疑状态
2019-03-06
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2019-03-06
秋色园引发CPU百分百命案的事件分析与总结
2019-03-06
安装jdk并配置环境变量
2019-03-06
稀疏数组
2019-03-06
js的严格模式
2019-03-06
idea的安装和无限期试用
2019-03-06
Oracle VM VirtualBox安装PVE虚拟机
2019-03-06
【转】如何用css限制文字长度,使溢出的内容用省略号…显示
2019-03-06
Android MediaPlayer setDataSource failed
2019-03-06
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2019-03-06
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2019-03-06
大前端的自动化工厂(1)——Yeoman
2019-03-06
数据仓库建模方法论
2019-03-06
虚拟机搭建hadoop环境
2019-03-06
DataStax Bulk Loader教程(四)
2019-03-06
物联网、5G世界与大数据管理
2019-03-06
Cassandra与Kubernetes
2019-03-06
.NET应用框架架构设计实践 - 概述
2019-03-06