描述
切割回文

#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相关推荐

  1. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  2. UVA 11584 Partitioning by Palindromes (字符串区间dp)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. UVa 401 - Palindromes

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=96&page=s ...

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

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

  5. UVA 11584 Partitioning by Palindromes 动态规划 入门

    这个题目的大意就是,给你一个字符串,然后让你求出最少的回文数.我开始傻逼了,写了一个o(n^3)的算法,结果老超时.然后略看了别人的题解,才知道有个如此的转移方程. f[i+1]=min(f[j]+1 ...

  6. UVA 11584—— Partitioning by Palindromes

    题意:给定一个串,然后问最少可以分割成多少个回文串. 思路:简单dp,dp[i]=min(dp[j]+1,1<j<=i),两次循环扫一遍即可,考察dp的思想. code: #include ...

  7. uva 11584——Partitioning by Palindromes

    题意:给定一个字符串,把该字符串划分为最少的回文串. 思路:dp,到达i点的回文串长度都存起来,那么dp[i]=min(以i为结尾的最短的回文串长度). code: #include <bits ...

  8. UVA401 ​​​​​​​Palindromes【字符串】

    Palindromes UVA - 401 题目传送门 题目大意:给你一个字符串,判断其是回文串还是镜像串. AC代码: #include <cstdio> #include <io ...

  9. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  10. UVa在线比赛单题汇总-----DP专题

    动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...

最新文章

  1. SQL Server text field里面有换行符的时候copy到excel数据会散乱
  2. c语言八大数据基本类型,C语言中基本的数据类型有哪些
  3. 计算机美术与设计方案,试述电脑美术及其在现代设计教学与创作中的作用2200字...
  4. MFC中Spin control的使用
  5. 详解实时查看网卡流量的几款工具
  6. vue 工程修改浏览器title以及icon
  7. 前端学习(682):switch和if else if
  8. linux 版本的scipy,linux安装scipy
  9. micropython stm32f429_[MicroPython]STM32F407开发板驱动OLED液晶屏
  10. php 页面上显示xls文档,phpExcel输出xls文档显示乱码的解决方法
  11. oracle 11g安装自己理解
  12. 2中我建的表怎么是小写的_面试官:2个线程交替打印大小写英文字母,你会怎么实现?...
  13. c语言调用串口扫码枪,C#利用控件mscomm32.ocx读取串口datalogic扫描枪数据
  14. 吸尘器上亚马逊要求UL1017测试报告怎么办
  15. 轴承行业PLM解决方案
  16. 【抽奖】知网研学福利月卡
  17. 卡刷supersu和magisk实现安卓手机获取root权限
  18. 开学季好物怎么选,学生党必备的几款好物分享
  19. 个人邮箱怎么注册,商业人士用哪个邮箱,邮箱使用全攻略!
  20. i5 12400f性能怎么样 i5 12400f相当于什么水平酷睿i5 12400f有核显吗

热门文章

  1. mysql: 身份证校验等问题
  2. 如何更新npm版本 阿星小栈
  3. Android 消息通知滚动
  4. Matlab 常用语句(5)---eig(求特征值和特征向量)
  5. Light OJ 1138
  6. 【- Flutter 桌面篇 -】 FlutterUnit win版闪亮登场
  7. Wannacry 勒索病毒有预设的解密口令“WNcry@2ol7”么?
  8. 关于阿里巴巴icon矢量图显示空白问题
  9. 微信公众号主体注册数量提升申请方法
  10. 应用程序初始化(0xc0000034)失败