题意

判断一个字符串能划分成的最小回文串的个数

思路

首先,分析问题,定义状态: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 划分回文串相关推荐

  1. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

  2. UVA - 11584 Partitioning by Palindromes(划分成回文串)(dp)

    题意:输入一个由小写字母组成的字符串,你的任务是把它划分成尽量少的回文串,字符串长度不超过1000. 分析: 1.dp[i]为字符0~i划分成的最小回文串的个数. 2.dp[j] = Min(dp[j ...

  3. 【51nod 1154】 回文串划分

    有一个字符串S,求S最少可以被划分为多少个回文串. 例如:abbaabaa,有多种划分方式. a|bb|aabaa - 3 个回文串 a|bb|a|aba|a - 5 个回文串 a|b|b|a|a|b ...

  4. 求最长回文串-从动态规划到马拉车之路(上)

    要解决的问题: 给定一个字符串,要求求出这个字符串中的最长的回文串子串. 例子: cbddba的最长回文子串为 bddb cbdedba的最长回文子串为dbedb 由上面的例子可以看到,在考虑回文子串 ...

  5. 回文串(algorithm)

    题目(回文子串的个数) - 中心扩展: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目. 回文字符串 是正着读和倒过来读一样的字符串. 子字符串 是字符串中的由连续字符组成的一个序 ...

  6. 【132】求把字符串分割成回文串的最少切分次数

    给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文. 返回符合要求的 最少分割次数 . 示例 1: 输入:s = "aab" 输出:1 解释:只需一次分割就可将 s ...

  7. 伍六七带你学算法 入门篇-最长回文串

    力扣解题,每日一题:409. 最长回文串 难度- 简单 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" ...

  8. LeetCode简单题之最长回文串

    题目 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 . 在构造过程中,请注意 区分大小写 .比如 "Aa" 不能当做一个回文字符串. 示例 ...

  9. usaco Calf Flac(O(n)时间求回文串长度)

    好高兴,为数不多的我没看题解的题·,我用的是O(n)时间求回文串长度的算法算法在我上一篇博客. 然后就是注意细节了. /* ID:jinbo wu TASK: calfflac LANG:C++ */ ...

  10. manacher算法----O(n)最长回文串

    manacher算法----O(n)最长回文串 分类:字符串 (126)  (0)  举报  收藏 manacher的时间复杂度为O(n),后缀数组好像可以处理O(nlogn),但是有些变态题目可能卡 ...

最新文章

  1. 资源 | 100+个自然语言处理数据集大放送,再不愁找不到数据!
  2. 【机器学习】6大监督学习模型:毒蘑菇分类
  3. java面试题27 java中下面哪些是Object类的方法()
  4. java sql超过32k_db2 clob类型如何能存储大于32k的字符串
  5. 动手做个DialoGPT:生成式多轮对话模型
  6. Qt下libusb-win32的使用(一)打印设备描述符
  7. android获取电量的方法,在Android中获取电池电量和状态
  8. GitHub 上 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库
  9. LeetCode28.实现strStr() JavaScript
  10. 【离散数学笔记】计数原理:解决计数问题的基本方法
  11. Puppet 笔记 package file services
  12. Web打印控件Lodop实现表格物流单的打印
  13. 三维地图下载,3D地图下载,谷歌地球三维地形图查看
  14. crm系统服务器要求,crm系统需要配备什么云服务器
  15. vlookup使用步骤_vlookup函数的使用方法
  16. mathcontext保留2位小数_Java BigDecimal subtract()用法及代码示例
  17. 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
  18. iVMS-4200 Vs区别_44751红单足球预测 法甲 21:00 安格斯 VS 梅斯
  19. MATLAB 2019 快速入门教程(官方手册翻译)(1/4)
  20. 人脸识别4-百度商用方案调研

热门文章

  1. Python刷题系列(8)_Pandas_Dataframe
  2. 大战略游戏:统治者:罗马 for Mac
  3. 【离散数学】单射、满射与双射
  4. 银行软件测试论文参考文献,软件测试毕业论文参考文献.doc
  5. 手机无限重启可能跟电压不稳有关
  6. 文件保险箱——用区块链保护文件
  7. 判断手机号是否是素数
  8. 使用js脚本实现网页版微信定时发送信息
  9. java计算机毕业设计用户行为自动化书籍推荐系统MyBatis+系统+LW文档+源码+调试部署
  10. volatile内存屏障