G - dp-easy
来源:互联网 发布:java中时间格式化 编辑:程序博客网 时间:2024/04/30 21:34
Description
Problem H: Partitioning by Palindromes
We say a sequence of characters is a palindrome if it is the same written forwards and backwards. For example, 'racecar' is a palindrome, but 'fastcar' is not.
A partition of a sequence of characters is a list of one or more disjoint non-empty groups of consecutive characters whose concatenation yields the initial sequence. For example, ('race', 'car') is a partition of 'racecar' into two groups.
Given a sequence of characters, we can always create a partition of these characters such that each group in the partition is a palindrome! Given this observation it is natural to ask: what is the minimum number of groups needed for a given string such that every group is a palindrome?
For example:
- 'racecar' is already a palindrome, therefore it can be partitioned into one group.
- 'fastcar' does not contain any non-trivial palindromes, so it must be partitioned as ('f', 'a', 's', 't', 'c', 'a', 'r').
- 'aaadbccb' can be partitioned as ('aaa', 'd', 'bccb').
Input begins with the number n of test cases. Each test case consists of a single line of between 1 and 1000 lowercase letters, with no whitespace within.
For each test case, output a line containing the minimum number of groups required to partition the input into groups of palindromes.
Sample Input
3racecarfastcaraaadbccb
Sample Output
173
Kevin Waugh
#include<stdio.h>#include<string.h>const int INF=(1<<29);char z[1007];int dp[1007];bool judge(int left,int right){ for(int c=left,d=right;c<=d;++c,--d) if(z[c]!=z[d])return false; return true;}int min(int x,int y){ return x<y?x:y;}int main(){ int n; while(scanf("%d",&n)!=EOF) { while(n--) { scanf("%s",z+1); dp[0]=0; int len=strlen(z+1); for(int i=1;i<=len;++i) dp[i]=INF; for(int a=1;a<=len;++a) for(int b=1;b<=a;++b) if(judge(b,a)) dp[a]=min(dp[a],dp[b-1]+1); printf("%d\n",dp[len]); } } return 0;}
- G - dp-easy
- 【DP】 hdu4359 Easy Tree DP?
- hdu4359 Easy Tree DP? dp
- ZOJ_3791_An Easy Game(DP)
- bzoj3450.Easy(期望DP)
- bzoj3450Tyvj1952 Easy 期望DP
- hdu 4359 Easy Tree DP?
- hdu 4359 Easy Tree DP?
- hdu 4359 Easy Tree DP?
- hdu 4359 Easy Tree DP?
- UVA116 Unidirectional TSP easy DP
- Lightoj 1031 - Easy Game DP
- zoj3791(An Easy Game) DP
- 【BZOJ3450】【Tyvj1952】Easy 概率DP
- HDOJ 5357 Easy Sequence DP
- HDU 3182【状压DP--easy】
- [LightOJ 1031]Easy Game[DP]
- 【BZOJ3450】Tyvj1952 Easy【期望DP】
- Zero Clipboard js+swf实现的复制功能使用方法
- 分数类
- Qt源码分析之corelib
- oracle的分析函数学习
- All about Oracle FED and KFOD tools
- G - dp-easy
- 快速排序算法
- Android网络连接判断与处理
- Python - 开始使用Python编程
- C++。NET的代码学习资料,真是少啊
- 高效Linux用户需要了解的命令行技能
- Matlab中的图怎样插入Word效果最好
- numeric_limits用法
- Qt 之 QTableWidget 的最基本使用方式