题目描述
小T送给了小L了一串项链。为了方便,我们把项链上形态不同钻石用不同的字母表示。这样小L的项链就变成了一个字符串。
小L忽然想把这串项链优美地切割一下,她想把它切割成尽量少的
回文项链,啊也就是回文串。求最少的切割次数。
输入
第一行一个整数T 表示数据组数
下面T组数据,每一组数据:
只有一行,一个只有小写英文字母的字符串,字符串长度 <= 1000。
输出
对于每一组数据,输出将这个字符串能切割成最少的回文串所需切割的次数。
样例输入 Copy
2
abaacca
abcd
样例输出 Copy
1
3

感觉没思路的题目应该就是动态规划

#include<iostream>
#include<vector>
using namespace std;
bool IsPalindRome(string str){//回文判断
int end=str.length()-;
int start=;
while(start<end){
if(str[start]==str[end]){
start++;
end--;
}else{
return false;
}
}
return true;
}
int minCut(string s) {
int len=s.length();
vector<int> dp(len,);//初始化为0
for(int i=;i<len;i++){
dp[i]=IsPalindRome(s.substr(,i+)) ? : i;//初始化
if(dp[i]==)
continue;
else{
for(int j=;j<=i;j++){
if(IsPalindRome(s.substr(j,i-j+)))
dp[i]=min(dp[i],dp[j-]+);
else{
dp[i]=min(dp[i],dp[j-]+i-j+);
}
}
}
}
return dp[len-];
} int main(){
string str;
int n;
cin>>n;
while(n--){
cin>>str;
cout<<minCut(str)<<endl;
}
}

难点是下面的OK:

    int minCut(string s) {
int len=s.length();
vector<int> dp(len,);//初始化为0
for(int i=;i<len;i++){
dp[i]=IsPalindRome(s.substr(,i+)) ? : i;//判断每一步
if(dp[i]==)
continue;
else{
for(int j=;j<=i;j++){
if(IsPalindRome(s.substr(j,i-j+))) //1--i判断回文串
dp[i]=min(dp[i],dp[j-]+);//可以理解
else{
dp[i]=min(dp[i],dp[j-]+i-j+);//可以理解有点难度
}
}
}
}
return dp[len-];
}

小L的项链切割 (回文串)的更多相关文章

  1. P1872 回文串计数(回文树)

    题目描述 小a虽然是一名理科生,但他常常称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名其妙的热爱,这也促使他走向了以记忆量大而闻名的生物竞赛.然而,他很快发现这并不能满足他热爱背诵的心,但 ...

  2. 2018.12.15 bzoj3676: [Apio2014]回文串(后缀自动机)

    传送门 对原串建立一个后缀自动机,然后用反串在上面匹配. 如果当前匹配的区间[l,r][l,r][l,r]包裹了当前状态的endposendposendpos中的最大值,那么[l,maxpos][l, ...

  3. 【NOIP模拟赛】【乱搞AC】【奇技淫巧】【乘法原理】回文串计数

    回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他走向了以记忆量 ...

  4. 回文串的Manacher算法

    Manacher算法较传统算法的优化之处在于它对每个回文中心寻找回文半径的时候并不是都从半径为1开始找的,而是利用前面已经完成的任务,寻找一个初始的开始搜索的半径大小,复杂度是线性的. 参考博客:ht ...

  5. 小白月赛13 B小A的回文串 (马拉车算法求最长回文子串)

    链接:https://ac.nowcoder.com/acm/contest/549/B来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  6. bzoj 3790 神奇项链 回文串 manacher|PAM

    LINK:神奇项链 存在两个操作:1. 一个操作可以生成所有形式的回文串 2.一个操作可以将两个串给合并起来 如果前缀和后缀相同还可以将其并起来. 多组询问 每次询问合成一个串所需最少多少次2操作. ...

  7. [题解]第十一届北航程序设计竞赛预赛——L.偶回文串

    题目描述 长度为偶数的回文串被称为偶回文串.如果一个字符串重新排序之后能够成为一个偶回文串,则称为可回文的. 给一个字符串,求可回文的子串个数.字符串只含小写字母,单个字符串长度不超过10^5,所有数 ...

  8. HDU 5651 计算回文串个数问题(有重复的全排列、乘法逆元、费马小定理)

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=5651 很容易看出来的是,如果一个字符串中,多于一个字母出现奇数次,则该字符串无法形成回文串,因为不能删减 ...

  9. 牛客小白月赛13 小A的回文串(Manacher)

    链接:https://ac.nowcoder.com/acm/contest/549/B来源:牛客网 题目描述 小A非常喜欢回文串,当然我们都知道回文串这种情况是非常特殊的.所以小A只想知道给定的一个 ...

随机推荐

  1. MyBatis笔记----报错Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ij34.model.UserMapper.selectUser

    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@41cf53f9: startup ...

  2. python第一百一十天--Django 5

    #####################################中间件################################################ settings.py ...

  3. no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups的解决方法

    解决方法一: 找到这个settings.xml文件,进行编辑,在pluginGroups标签下加入下面的配置 <pluginGroups><pluginGroup>org.ap ...

  4. JavaScript -- 时光流逝(五):js中的 Date 对象的方法

    JavaScript -- 知识点回顾篇(五):js中的 Date 对象的方法 Date 对象: 用于处理日期和时间. 1. Date对象的方法 <script type="text/ ...

  5. Java入门(五):控制流程

    在Java中,使用条件语句和循环结构确定控制流程,在本文中,主要包括块作用域.条件语句.循环结构.中断循环这四部分. 一.块作用域 块,也叫复合语句,是指由一对大括号括起来的若干条Java语句.块决定 ...

  6. 《Java大学教程》—第7章 类的实现

    统一建模语言(UML)用方框代表类.方框被分成3部分,第一部分是类名,第二部分是类的属性,第三部分是类的方法.类的属性(属性名称:属性类型):类的方法(方法名称(参数类型):返回值类型).静态的类的属 ...

  7. CF 331 E. Biologist

    CF 331 E. Biologist 题目描述 题目大意:有\(n\)个点,初始时每个点为黑色或者白色,你可以花费\(v_i\)的代价将一个点反色.然后你有许多计划,每个计划要求一个点集中的所有点为 ...

  8. Pandas 的数据结构

    Pandas的数据结构 导入pandas: 三剑客 from pandas import Series,DataFrame import pandas as pd import numpy as np ...

  9. oracle windows 新建用户授权 导出导入bmp文件

    1.新建用户 sqlplus /no log conn /as sysdba create user tkjj identified by tkjj2017 grant dba to tkjj con ...

  10. Android Call requires API level 19 (current min is 15)

    在 Android 应用开发时候,配置文件中声明了支持的Android系统范围: minSdkVersion 15targetSdkVersion 27 但是代码中需要使用的一个类 (android. ...