dp回文
。dp回文子串 通常在dp数组中存放的是 从i到j是否是回文子串
1.动态规划
2.中心扩展法
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
][] = { };
int main(void)
{
string s1;
while (cin >> s1)
{
int length = s1.length();
int i;
; i <= length - ; ++i)
dp[i][i] = ;
int j;
; i >=; --i)
{
; j <=length-; ++j)
{
if (s1[i] == s1[j])
{
dp[i][j] = dp[i + ][j - ] + ;
}
else
{
dp[i][j] = max(dp[i + ][j], dp[i][j - ]);
}
}
}
cout << ][length - ] << endl;
}
;
}
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
][] = { };
int main(void)
{
string s1;
while (cin >> s1)
{
int length = s1.length();
int i;
; i <= length - ; ++i)
dp[i][i] = ;
int j;
; i >= ; --i)
{
; j <= length - ; ++j)
{
if (s1[i] != s1[j])
{
dp[i][j] = dp[i + ][j] + dp[i][j - ] - dp[i + ][j - ];
}
else
{
dp[i][j] = dp[i + ][j] + dp[i][j - ] - dp[i + ][j - ] + dp[i + ][j - ] + ;
}
}
}
cout << ][length - ] << endl;
}
;
}
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
]; //长度
bool ispalindrome(string s,int start,int end)
{
while (start <= end)
{
if (s[start] != s[end])
{
return false;
}
++start;
--end;
}
return true;
}
int main(void)
{
string s;
while (cin >> s)
{
int length = s.length();
int i;
; i <= length; ++i)
{
dp[i] = i - ;
, i-) == true)
{
dp[i] = ;
}
}
int j;
; i <= length-; ++i)
{
; j <= i; ++j)
{
if (ispalindrome(s, j, i) == true)
{
dp[i + ] = min(dp[i + ], dp[j] + );
}
}
}
cout << "需要分割的次数为" << dp[length] << "次"<<endl;
}
;
}
dp回文的更多相关文章
- poj 1159 dp回文串
题意:添加最少的字符使之成为回文串 #include<cstdio> #include<iostream> #include<algorithm> #include ...
- POJ 3280 Cheapest Palindrome(DP 回文变形)
题目链接:http://poj.org/problem?id=3280 题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价 Sample Input 3 4 ...
- poj 3280 Cheapest Palindrome ---(DP 回文串)
题目链接:http://poj.org/problem?id=3280 思路: dp[i][j] :=第i个字符到第j个字符之间形成回文串的最小费用. dp[i][j]=min(dp[i+1][j]+ ...
- HDU4745--区间DP+回文串
这题的题意为,给你一个环状的字符串,有两只兔子分别从某任意的石头上开始跳跃.一只顺时针跳.一只逆时针跳.两只兔子每一次落脚处石头的质量都相同.兔子要一步一步的跳,且不能跳到之前跳到过的地方.总的来说, ...
- LightOJ - 1205:Palindromic Numbers (数位DP&回文串)
A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the sam ...
- CodeForces-245H:Queries for Number of Palindromes(3-14:区间DP||回文串)
Times:5000ms: Memory limit:262144 kB 给定字符串S(|S|<=5000),下标由1开始.然后Q个问题(Q<=1e6),对于每个问题,给定L,R,回答区间 ...
- Palindrome Partition CodeForces - 932G 回文树+DP+(回文后缀的等差性质)
题意: 给出一个长度为偶数的字符串S,要求把S分成k部分,其中k为任意偶数,设为a[1..k],且满足对于任意的i,有a[i]=a[k-i+1].问划分的方案数. n<=1000000 题解: ...
- GDUT 校赛02 dp回文串
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABSkAAAIhCAIAAAAtmainAAAgAElEQVR4nOzdfaxkd33n+ZJacstqa3 ...
- Lightoj1205——Palindromic Numbers(数位dp+回文数)
A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the sam ...
随机推荐
- spring boot 2.0 ribbon 负载均衡配置
1.pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId ...
- Head First设计模式读书笔记
阅读指南: 精读一章内容,手工输入一章代码(注1),与书中描述的思想进行印证,实在搞不懂就放过吧.设计模式绝对不会一次就看懂的. 这本书对于理解设计模式很有帮助,就是例子不太符合中国人的思维模式,但是 ...
- setTimeout与setInterval的区别浅析
在网页制作动态效果时,一定会遇到某些需求,要求某段程序等待多时时间后再开始执行,就像在我们的生活中一样,待会儿再开始做一件事.在JavaScript中主要通过定时器实现此类需求,本文将对定时器做一个概 ...
- git 取消对某个文件的跟踪
git rm --cached <fileName> 例如 : git add 后,不想提交在status里的.idea/vcs.xml.操作如下:
- selenium-确认进入了预期页面
selenium确认进入了预期页面 在自动化操作中,浏览器每次进入一个新的需要,都需要确认该页面是否打开或打开的页面是否是预期的页面 需要进行确认页面后方可进行下一步操作 确认页面有很多中方法,像每个 ...
- MyDAL - 组件适用范围说明
索引: 目录索引 一.组件特性简介: 1.MSIL 底层代码采用 System.Reflection.Emit.Lightweight 类库使用 IL 的方式处理 Model 组装,性能刚刚的~ 2. ...
- 我们距离AI编程还有多远?
近几年来,人工智能的信息以不同形式霸占着我们的眼球,我们知道AlphaGo.微软小冰.Sophia,了解过自动驾驶.无人机.智能家居等,深知人工智能是在记忆力.学习力.运算力方面都远超人类的存在,但人 ...
- 数据库原理 - 序列7 - Binlog与主从复制
本文节选自作者书籍<软件架构设计:大型网站技术架构与业务架构融合之道>.作者微信公众号:架构之道与术.公众号底部菜单有书友群可以加入,与作者和其他读者进行深入讨论.也可以在京东.天猫上购买 ...
- C# ToString()日期格式
C# ToString()日期格式 ToString:2016/9/27 0:00:00ToString("yyyy/MM/dd"):2016/09/27ToString(&quo ...
- C#-反射reflection
目录 简介 引入 1.新建类库 2. 类库的使用 3.反射 反射实例1 反射实例2 反射实例3 C# shanzm 简介 反射(reflection)是什么? 在<精通C#>中是这么说的& ...