UVa11584 划分回文串
题意
判断一个字符串能划分成的最小回文串的个数
思路
首先,分析问题,定义状态:d[i]为s[0]~s[i]的解,写出状态转移方程:d[i]=min(d[i],判断条件?d[j]+1:INF);
后面的判断条件,就是s[i]~s[j]是否是回文串,为什么?因为我们对于第i个字符,必然属于从s[j] ~ s[i]的一个回文串中,这是题目要求,j可以是0 ~ i的数,这样就很容易理解状态转移方程了。
代码
#include <stdio.h>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool judge(string s) {if (s.empty())return true;for (int i = 0; i < s.length()/2+1; i++) {if (s[i] != s[s.length() - i - 1])return false;}return true;
}
int main(void) {string s;cin >> s;int d[10000];memset(d, 0, sizeof(d));for (int i = 1; i <= s.length(); i++) {d[i] = d[i - 1] + 1;for (int j = 1; j < i; j++) {if (judge(s.substr(j-1, i))){d[i] = min(d[i], d[j-1] + 1);//转移方程}}}cout << d[s.length()];system("pause");
}
UVa11584 划分回文串相关推荐
- UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)
整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...
- UVA - 11584 Partitioning by Palindromes(划分成回文串)(dp)
题意:输入一个由小写字母组成的字符串,你的任务是把它划分成尽量少的回文串,字符串长度不超过1000. 分析: 1.dp[i]为字符0~i划分成的最小回文串的个数. 2.dp[j] = Min(dp[j ...
- 【51nod 1154】 回文串划分
有一个字符串S,求S最少可以被划分为多少个回文串. 例如:abbaabaa,有多种划分方式. a|bb|aabaa - 3 个回文串 a|bb|a|aba|a - 5 个回文串 a|b|b|a|a|b ...
- 求最长回文串-从动态规划到马拉车之路(上)
要解决的问题: 给定一个字符串,要求求出这个字符串中的最长的回文串子串. 例子: cbddba的最长回文子串为 bddb cbdedba的最长回文子串为dbedb 由上面的例子可以看到,在考虑回文子串 ...
- 回文串(algorithm)
题目(回文子串的个数) - 中心扩展: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目. 回文字符串 是正着读和倒过来读一样的字符串. 子字符串 是字符串中的由连续字符组成的一个序 ...
- 【132】求把字符串分割成回文串的最少切分次数
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就可将 s ...
- 伍六七带你学算法 入门篇-最长回文串
力扣解题,每日一题:409. 最长回文串 难度- 简单 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" ...
- LeetCode简单题之最长回文串
题目 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 . 在构造过程中,请注意 区分大小写 .比如 "Aa" 不能当做一个回文字符串. 示例 ...
- usaco Calf Flac(O(n)时间求回文串长度)
好高兴,为数不多的我没看题解的题·,我用的是O(n)时间求回文串长度的算法算法在我上一篇博客. 然后就是注意细节了. /* ID:jinbo wu TASK: calfflac LANG:C++ */ ...
- manacher算法----O(n)最长回文串
manacher算法----O(n)最长回文串 分类:字符串 (126) (0) 举报 收藏 manacher的时间复杂度为O(n),后缀数组好像可以处理O(nlogn),但是有些变态题目可能卡 ...
最新文章
- 资源 | 100+个自然语言处理数据集大放送,再不愁找不到数据!
- 【机器学习】6大监督学习模型:毒蘑菇分类
- java面试题27 java中下面哪些是Object类的方法()
- java sql超过32k_db2 clob类型如何能存储大于32k的字符串
- 动手做个DialoGPT:生成式多轮对话模型
- Qt下libusb-win32的使用(一)打印设备描述符
- android获取电量的方法,在Android中获取电池电量和状态
- GitHub 上 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库
- LeetCode28.实现strStr() JavaScript
- 【离散数学笔记】计数原理:解决计数问题的基本方法
- Puppet 笔记 package file services
- Web打印控件Lodop实现表格物流单的打印
- 三维地图下载,3D地图下载,谷歌地球三维地形图查看
- crm系统服务器要求,crm系统需要配备什么云服务器
- vlookup使用步骤_vlookup函数的使用方法
- mathcontext保留2位小数_Java BigDecimal subtract()用法及代码示例
- 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
- iVMS-4200 Vs区别_44751红单足球预测 法甲 21:00 安格斯 VS 梅斯
- MATLAB 2019 快速入门教程(官方手册翻译)(1/4)
- 人脸识别4-百度商用方案调研