博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ-1159 Palindrome---变成回文串的最小代价
阅读量:6035 次
发布时间:2019-06-20

本文共 855 字,大约阅读时间需要 2 分钟。

题目链接:

题目大意:

题意很明确,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。

解题思路:

设原序列S的逆序列为S'

最少需要补充的字母数 = 原序列S的长度 —  S和S'的最长公共子序列长度

采用滚动数组节省空间

 

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 const int maxn = 1e4 + 10; 7 char s1[maxn], s2[maxn]; 8 int dp[2][maxn], n; 9 int main()10 {11 scanf("%d", &n);12 scanf("%s", s1);13 for(int i = 0; i < n; i++)14 s2[i] = s1[n - 1 - i];15 for(int i = 0; i < n; i++)16 {17 for(int j = 0; j < n; j++)18 {19 int now = (i + 1) & 1;20 if(s1[i] == s2[j])21 dp[now][j + 1] = dp[!now][j] + 1;22 else dp[now][j + 1] = max(dp[!now][j + 1], dp[now][j]);23 }24 }25 cout<

 

转载于:https://www.cnblogs.com/fzl194/p/9009796.html

你可能感兴趣的文章
jquery easyUI checkbox复选项获取并传后台
查看>>
浅析NopCommerce的多语言方案
查看>>
设计模式之简单工厂模式
查看>>
C++中变量的持续性、链接性和作用域详解
查看>>
2017 4月5日上午
查看>>
Google Chrome开发者工具
查看>>
第一阶段冲刺报告(一)
查看>>
使用crontab调度任务
查看>>
【转载】SQL经验小记
查看>>
zookeeper集群搭建 docker+zk集群搭建
查看>>
Vue2.5笔记:Vue的实例与生命周期
查看>>
论JVM爆炸的几种姿势及自救方法
查看>>
联合体、结构体简析
查看>>
使用throw让服务器端与客户端进行数据交互[Java]
查看>>
java反射与代理
查看>>
深度分析Java的ClassLoader机制(源码级别)
查看>>
微服务架构选Java还是选Go - 多用户负载测试
查看>>
我的友情链接
查看>>
Javascript中的异步如何实现回调
查看>>
halcon算子介绍
查看>>