UVa 11584 - Partitioning by Palindromes(DP)
2015-07-25 13:41
375 查看
给出一个字符串,判断他最少划分成几个回文串。
枚举字符串终点,转移方程为d[i]=min(d[i],d[j−1]+1)d[i]=min(d[i],d[j-1]+1)。
枚举字符串终点,转移方程为d[i]=min(d[i],d[j−1]+1)d[i]=min(d[i],d[j-1]+1)。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=1010; char s[maxn]; int d[maxn]; inline bool ok(int l,int r){ while(l<=r){ if(s[l]!=s[r]) return false; ++l,--r; } return true; } int main(){ int t; scanf("%d",&t); while(t--){ scanf("%s",s); int n=(int)strlen(s); for(int i=0;i<n;++i){ d[i]=i+1; for(int j=0;j<=i;++j) if(ok(j,i)) d[i]=min(d[i],d[j-1]+1); } printf("%d\n",d[n-1]); } return 0; }
相关文章推荐
- swift语言中一些常用的运算符
- OC学习笔记——类别(Category)
- HTML之框架(frameest、ifram)
- hdu1213 How Many Tables(并查集)
- SpringMVC简单项目配置
- 机房收费系统之组合查询
- 微软 .net 你更新这么快IDE vs2015 、语法糖 6.0、framework、‘吹得这么牛,然并用
- Select count(*)和Count(1)的区别和执行方式
- apk打包过程
- Shell中反引号(`)与$()用法的区别
- swift基础语法
- CentOS 忘记 root password处理
- PHP判断用户登录状态
- POJ 1164:The Castle
- C# using 三种使用方式
- 包管理器控制台常用命令
- POJ 1164:The Castle
- 样本方差为何除以n-1
- Select count(*)和Count(1)的区别和执行方式
- Linux学习一