题意:给一个字符串,问至少切割几次使每子串都是回文的。

解法:f[i]表示前i个字符至少需要切割几次,预处理p[i][j]表示子串s[i]~s[j]是否为回文串。O(n^2)

另外,这题也类似“山区建小学”,可以枚举每个回文串的中心。但稍微麻烦一点。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6
7 #define N 1010
8 char s[N];
9 int p[N][N],f[N];
10
11 int mmin(int x,int y) {return x<y?x:y;}
12
13 int main()
14 {
15 int T,l;
16 scanf("%d",&T);
17 while (T--)
18 {
19 scanf("%s",s+1);
20 l=strlen(s+1);
21 memset(p,0,sizeof(p));
22 for (int i=1;i<=l;i++)
23 {
24 int x=0;
25 while (i-x>0&&i+x<=l&&s[i-x]==s[i+x]) p[i-x][i+x]=1,x++;
26 x=1;
27 while (i-x>0&&i+x-1<=l&&s[i-x]==s[i+x-1]) p[i-x][i+x-1]=1,x++;
28 }
29 f[0]=-1;
30 for (int i=1;i<=l;i++)
31 {
32 f[i]=i-1;
33 for (int j=0;j<i;j++)
34 if (p[j+1][i]) f[i]=mmin(f[i],f[j]+1);
35 }
36 printf("%d\n",f[l]);
37 }
38 return 0;
39 }

最新文章

  1. 使用Swift打造动态库SDK和DemoAPP时所遇到的(Xcode7.3)
  2. 浅谈Java中的引用
  3. animate动画jquery
  4. linux访问windows共享文件夹的方法
  5. nginx 环境搭建(基于linux)
  6. Linux中yum和apt-get用法及区别
  7. struts2.3.15.1 中jsp:include与jsp:forward的用法
  8. css中文字体unicode对照表
  9. 【PythonChallenge】Level 4
  10. applicationDefaultJvmArgs:
  11. delphi if 语句循环语句
  12. go:挂webserver
  13. UVA 10277 Boastin&#39; Red Socks
  14. Java Thread wait、notify与notifyAll
  15. 简述在ADO中使用接口的抽象数据提供程序以及ADO.NET数据提供程序工厂模型
  16. 键盘快捷键大全 - Mac 技巧
  17. MongoDB --- 01. 安装, 第三方客户端
  18. ELk(Elasticsearch, Logstash, Kibana)的安装配置
  19. dtruss
  20. bzoj3209 花神的数论题——数位dp

热门文章

  1. SQL中的主键,候选键,外键,主码,外码
  2. Github Python计算器开源项目 二次开发--增加函数图形
  3. 简单明朗的 RNN 写诗教程
  4. jmeter-并发及常数吞吐量定时器设定
  5. 今天聊点干货—关于CSS样式来源
  6. 主题模型(Topic)
  7. mdns
  8. luoguP4999 烦人的数学作业
  9. CSS 文本效果
  10. Spring Boot的进阶和高级