UVA#11584Partitioning by Palindromes
描述
切割回文
#include<iostream>
#include<cstring>
using namespace std;
const int INF = 10000;
int d[1005];
int ispa[1005][1005],vis[1005][1005];
char a[1010];
int l;
//int ispan(int s,int e){//正常判断 总复杂度O(n^3)
// int i = s;
// int j = e;
// while(i < j){// if(a[i] == a[j]){// ++i;
// --j;
// }
// else
// break;
// }
// if(i >= j)
// return 1;
// else
// return 0;
//}
void getispa(int l){//先求所有回文子串 int c,i,j;memset(ispa,0,sizeof(ispa)); for(c = 1;c <= l; ++c){ispa[c][c] = 1;i = c - 1;j = c;while(i >= 1 && j <= l && a[i] == a[j]){ispa[i][j] = 1;--i;++j;}i = c - 1;j = c + 1;while(i >= 1 && j <= l && a[i] == a[j]){ispa[i][j] = 1;--i;++j;}}
}
//int ispan(int s,int e){//使用dp ,方法来自紫书
// if(s >= e)
// return 1;
// if(a[s] != a[e])
// return 0;
// if(vis[s][e])
// return ispa[s][e];
// vis[s][e] = 1;
// ispa[s][e] = ispan(s + 1,e - 1);
// return ispa[s][e];
//}
int main(){//freopen("d://poj//data.txt","w",stdout);//udebugint n,i,j;scanf("%d",&n);for(int p = 0;p < n; ++p){scanf("%s",a + 1);l = strlen(a + 1);memset(vis,0,sizeof(vis));getispa(l);d[0] = 0;for(i = 1;i <= l; ++i){d[i] = INF;for(j = i;j > 0; --j){if(ispa[j][i]){int t = d[j - 1] + 1;if(t < d[i])d[i] = t;}}}printf("%d\n",d[l]);}return 0;
}
和照明系统差不多的思路。亮点是回文求解上的减少时间复杂度。
UVA#11584Partitioning by Palindromes相关推荐
- uva 401.Palindromes
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVA 11584 Partitioning by Palindromes (字符串区间dp)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVa 401 - Palindromes
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=96&page=s ...
- UVA - 11584 Partitioning by Palindromes(划分成回文串)(dp)
题意:输入一个由小写字母组成的字符串,你的任务是把它划分成尽量少的回文串,字符串长度不超过1000. 分析: 1.dp[i]为字符0~i划分成的最小回文串的个数. 2.dp[j] = Min(dp[j ...
- UVA 11584 Partitioning by Palindromes 动态规划 入门
这个题目的大意就是,给你一个字符串,然后让你求出最少的回文数.我开始傻逼了,写了一个o(n^3)的算法,结果老超时.然后略看了别人的题解,才知道有个如此的转移方程. f[i+1]=min(f[j]+1 ...
- UVA 11584—— Partitioning by Palindromes
题意:给定一个串,然后问最少可以分割成多少个回文串. 思路:简单dp,dp[i]=min(dp[j]+1,1<j<=i),两次循环扫一遍即可,考察dp的思想. code: #include ...
- uva 11584——Partitioning by Palindromes
题意:给定一个字符串,把该字符串划分为最少的回文串. 思路:dp,到达i点的回文串长度都存起来,那么dp[i]=min(以i为结尾的最短的回文串长度). code: #include <bits ...
- UVA401 Palindromes【字符串】
Palindromes UVA - 401 题目传送门 题目大意:给你一个字符串,判断其是回文串还是镜像串. AC代码: #include <cstdio> #include <io ...
- UVa Online Judge 工具網站
UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...
- UVa在线比赛单题汇总-----DP专题
动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...
最新文章
- SQL Server text field里面有换行符的时候copy到excel数据会散乱
- c语言八大数据基本类型,C语言中基本的数据类型有哪些
- 计算机美术与设计方案,试述电脑美术及其在现代设计教学与创作中的作用2200字...
- MFC中Spin control的使用
- 详解实时查看网卡流量的几款工具
- vue 工程修改浏览器title以及icon
- 前端学习(682):switch和if else if
- linux 版本的scipy,linux安装scipy
- micropython stm32f429_[MicroPython]STM32F407开发板驱动OLED液晶屏
- php 页面上显示xls文档,phpExcel输出xls文档显示乱码的解决方法
- oracle 11g安装自己理解
- 2中我建的表怎么是小写的_面试官:2个线程交替打印大小写英文字母,你会怎么实现?...
- c语言调用串口扫码枪,C#利用控件mscomm32.ocx读取串口datalogic扫描枪数据
- 吸尘器上亚马逊要求UL1017测试报告怎么办
- 轴承行业PLM解决方案
- 【抽奖】知网研学福利月卡
- 卡刷supersu和magisk实现安卓手机获取root权限
- 开学季好物怎么选,学生党必备的几款好物分享
- 个人邮箱怎么注册,商业人士用哪个邮箱,邮箱使用全攻略!
- i5 12400f性能怎么样 i5 12400f相当于什么水平酷睿i5 12400f有核显吗