Bailian4122 切割回文【DP】
4122:切割回文
总时间限制: 1000ms 内存限制: 65536kB
描述
阿福最近对回文串产生了非常浓厚的兴趣。
如果一个字符串从左往右看和从右往左看完全相同的话,那么就认为这个串是一个回文串。例如,“abcaacba”是一个回文串,“abcaaba”则不是一个回文串。
阿福现在强迫症发作,看到什么字符串都想要把它变成回文的。阿福可以通过切割字符串,使得切割完之后得到的子串都是回文的。
现在阿福想知道他最少切割多少次就可以达到目的。例如,对于字符串“abaacca”,最少切割一次,就可以得到“aba”和“acca”这两个回文子串。
输入
输入的第一行是一个整数 T (T <= 20) ,表示一共有 T 组数据。
接下来的 T 行,每一行都包含了一个长度不超过的 1000 的字符串,且字符串只包含了小写字母。
输出
对于每组数据,输出一行。该行包含一个整数,表示阿福最少切割的次数,使得切割完得到的子串都是回文的。
样例输入
3
abaacca
abcd
abcba
样例输出
1
3
0
提示
对于第一组样例,阿福最少切割 1 次,将原串切割为“aba”和“acca”两个回文子串。
对于第二组样例,阿福最少切割 3 次,将原串切割为“a”、“b”、“c”、“d”这四个回文子串。
对于第三组样例,阿福不需要切割,原串本身就是一个回文串。
问题链接:Bailian4122 切割回文
问题简述:(略)
问题分析:动态规划问题。
定义状态dp[i]: 前i个字符的最小切割回文,若dp[i]=INF(0x3F3F3F3F,初值)则表示不可完成。
dp[0] = 0
状态转移 dp[i]=min(dp[i],dp[j-1]+1 ) ( 1 < = j < = i 且 S [ i . . j ] 是 回 文 串 )
程序说明:(略)
参考链接:(略)
题记:(略)
AC的C++语言程序如下:
/* Bailian4122 切割回文 */#include <bits/stdc++.h>using namespace std;const int N = 1000;
char s[N + 1];
int dp[N + 1];bool judge(int l, int r)
{while (l <= r) {if (s[l] != s[r]) return false;l++, r--;}return true;
}int main()
{int t;scanf("%d", &t);while (t--) {scanf("%s", s);memset(dp, 0x3F, sizeof dp);int len = strlen(s);for (int i = 0; i < len; i++)for (int j = 0; j <= i; j++)if (judge(j, i)) {if (j == 0) dp[i] = 0;else dp[i] = min(dp[i], dp[j - 1] + 1);}printf("%d\n", dp[len - 1]);}return 0;
}
Bailian4122 切割回文【DP】相关推荐
- 百练 05 切割回文
百练 05 切割回文 总时间限制: 内存限制: 1000ms 65536kB 描述 阿福最近对回文串产生了非常浓厚的兴趣. 如果一个字符串从左往右看和从右往左看完全相同的话,那么就认为这个串是一个回文 ...
- NYOJ 1023 还是回文(DP,花最少费用形成回文串)
1 /* 2 题意:给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费. 3 那么,将字符串变成回文串的最小花费是多少呢? 4 5 思路:如果一个字符串增加一个字符 x可以形成一个 ...
- js把base64串解析成中文_回文问题终极篇:最小代价构造回文串
学算法认准 labuladong 东哥带你手把手撕力扣? 点击下方卡片即可搜索? 读完本文,你可以去力扣完成第 1312 题「让字符串成为回文串的最少插入次数」,难度 Hard. 回文串就是正着读反着 ...
- leetcode5. 最长回文子串(动态规划)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- 2019届vivo秋招笔试题【字符串排序】【链表奇数位正序偶数位逆序】【最长回文子串】
字符串排序 1.题目描述 请对组字符串进行排序,字符串由大小写字母和数字组成,需要满足以下比较规则 1.长度不同时,长度较短在排前面 2.长度相同时,按照字典顺序排列(AaBb-Zz, 0-9顺序), ...
- java 正序a~z_2019届vivo秋招笔试题【字符串排序】【链表奇数位正序偶数位逆序】【最长回文子串】...
字符串排序 1.题目描述 请对组字符串进行排序,字符串由大小写字母和数字组成,需要满足以下比较规则 1.长度不同时,长度较短在排前面 2.长度相同时,按照字典顺序排列(AaBb-Zz, 0-9顺序), ...
- 最长回文子序列java
给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列. 示例 1: 输入:s = "b ...
- DP之钢管切割,最长回文字符串,最长公共子串
在做LeetCode第3题的时候,用到了DP,但是自己对DP还是不了解,所以翻开算法导论,开始看动态规划喽,学好动态规划,走遍天下都不怕. 钢管切割 对于一根长n米的钢管,每个长度的价格不一样,对于长 ...
- leetcode132. 分割回文串 II(dp)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就可将 s ...
最新文章
- golang中的指针
- ping 出现(DUP)以及连接虚拟机ssh自动断开
- 如何读取resources目录下的文件路径(九种方式)
- php获取昨日时间段内,PHP 获取 特定时间范围 类
- python 内存_一行Python解决内存问题
- simulink仿真及代码生成技术入门到精通_Simulink仿真零基础入门到精通实用教学教程 自学全套...
- android 设置允许http请求_接口测试第6期:Fiddler设置开始捕获和停止捕获、HTTP报文结构,如何删除请求...
- 英特尔预计第12代酷睿H系列处理器将有超过100款设备采用
- 过滤特征_万字长文讲解如何做特征工程
- 阿里巴巴编码规范java
- [java]内部类的总结
- idea启动Tomcat控制台乱码但是不报错
- Protoc与GRPC的使用
- html图片边框的颜色,css图片的边框怎么设置颜色?
- 《经济学通识》十一、企业该不该有钱、慈善
- 简单普及数字人民币概论、特征、架构介绍
- “士兵突击”职场攻略心法
- 小帮手打卡系统分析~
- ijkplayer 录像 截图功能,支持rtsp rtmp http 流媒体
- 如何同时训练左手灵活性和音阶思维
热门文章
- 2018-09-14
- Hough(霍夫变换) 基于Opencv2.4.9 和VS2012平台下编写
- Python进行websocket接口测试
- html5移动web开发黑马掌上商城_月入35k大佬总结:web前端必须学习的内容(附全套前端教程)...
- 5.1 内存模型基础
- 计算机英语微课,【计算机英语论文】大学计算机基础微课设计研究
- linux 脚本监听,Linux—编写shell脚本监控主机
- java 项目名命名规范_javaWeb项目命名规范
- 数据库本地的sa有个叉号_多个客户端(50)同时使用sa账号操作服务器数据库(sqlserver)会有问题吗?...
- redis源码剖析(5):基础数据结构inset