Splits the string
来源:互联网 发布:ubuntu变为中文 编辑:程序博客网 时间:2024/05/17 01:56
Splits the string
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
Hrdv is interested in a string,especially the palindrome string.So he wants some palindrome string.
A sequence of characters is a palindrome if it is the same written forwards and backwards. For example, ‘abeba’ is a palindrome, but ‘abcd’ 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.
输入
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.
样例输入
racecar
fastcar
aaadbccb
样例输出
1
7
3
我的代码:
#include <iostream>#include <cstring>using namespace std;#define min(a,b) a>b?b:a char str[1001];int dp[1001];int judge(int x,int y)//判断是否是回文串{ while (x<=y) { if(str[x]!=str[y])return 0;//不是就返回0 x++;y--; } return 1;}int main(){ int i,j,k; while (cin >> str) { k=strlen(str); i=0; while (i<k) { dp[i]=i+1;//最坏的情况为字符自身长度 for (j=0;j<=i;++j) { if(str[j]==str[i]&&judge(j,i)) dp[i]=min(dp[i],dp[j-1]+1);//后一个的状态需要前一个决定 } i++; } cout << dp[k-1] << endl; } return 0;}
- Splits the string
- NYOJ 749 Splits the string
- 题目749 Splits the string
- NYOJ 749 Splits the string
- Splits the string
- nyoj Splits the string 749
- NYOJ练习题 Splits the string (简单动态规划)
- nyoj Splits the string 749 (区间dp)
- Optimize Splits and Compactions
- The String |
- The String ||
- Android-->build.gradle-->packagingOptions,splits
- the length of the string
- The C++ String Class
- the format control string
- hdu3336 Count the string
- hdu3336 Count the string
- HDU3336:Count the string
- PostgreSQL中的DO- 有条件的创建函数
- db2修改表字段
- jmeter插件使用(二)
- MySQL for Java的SQL注入测试
- 哈喽卖给的你是怎么回事机制的介么
- Splits the string
- CocoaPods详解之-Podfile.lock
- 分治法 --快速排序
- Android仿人人客户端(v5.7.1)开发(不错)
- Eclipse错误提示: Symbol 'xxxx' could not be resolved
- iOS开发经验之转移iOS App
- 忘记密码 登录帮助 公网登录通道 ·网易邮件中心诚聘英才 | 在线答疑 ·下载全球最好的免费中英翻译词典 ·货比三家选邮箱,做个精明消费者 海量...
- 黑马程序员————泛型初步
- 如果你做的事情毫不费力,就是在浪费时间