hdoj 5455 Fang Fang 【字符串简单题】
来源:互联网 发布:2011伤感网络歌曲大全 编辑:程序博客网 时间:2024/05/22 07:43
Fang Fang
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 403 Accepted Submission(s): 175
Problem Description
Fang Fang says she wants to be remembered.
I promise her. We define the sequenceF of strings.
F0 = ‘‘f",
F1 = ‘‘ff",
F2 = ‘‘cff",
Fn = Fn−1 + ‘‘f", for n > 2
Write down a serenade as a lowercase stringS in a circle, in a loop that never ends.
Spell the serenade using the minimum number of strings inF , or nothing could be done but put her away in cold wilderness.
I promise her. We define the sequence
Write down a serenade as a lowercase string
Spell the serenade using the minimum number of strings in
Input
An positive integer T , indicating there are T test cases.
Following areT lines, each line contains an string S as introduced above.
The total length of strings for all test cases would not be larger than106 .
Following are
The total length of strings for all test cases would not be larger than
Output
The output contains exactly T lines.
For each test case, if one can not spell the serenade by using the strings inF , output −1 . Otherwise, output the minimum number of strings in F to split S according to aforementioned rules. Repetitive strings should be counted repeatedly.
For each test case, if one can not spell the serenade by using the strings in
Sample Input
8ffcfffcffcffcffcfffcffcffcffcfffffcffcfffcffcfffcffffcfffffcffcffc
Sample Output
Case #1: 3Case #2: 2Case #3: 2Case #4: -1Case #5: 2Case #6: 4Case #7: 1Case #8: -1HintShift the string in the first test case, we will get the string "cffffcfffcff"and it can be split into "cffff", "cfff" and "cff".
我也是醉了,提交3次过,CE2次。杭电O__O "…
字符串F[0] = f,F[1] = ff,F[2] = cff,F[n] = F[n-1] + f。
题意:给你一个成环的字符串str,现在问你串str能否由F串组成,若不可以输出-1,反之输出组成str串需要的最少的F串。
没有坑的题都简单。。。
AC代码:
#include <cstdio>#include <cstring>#include <algorithm>#define MAXN 1000000+10using namespace std;char str[MAXN];int main(){ int t, k = 1; scanf("%d", &t); while(t--) { scanf("%s", str); int len = strlen(str); bool flag = true; int pos = -1; for(int i = 0; i < len; i++) { if(str[i] != 'c' && str[i] != 'f')//其它字符出现 { flag = false; break; } if(pos != -1) continue; if(str[i] == 'c') pos = i;//第一个c出现的位置 } printf("Case #%d: ", k++); if(!flag)//其它字符出现 { printf("-1\n"); continue; } int num;//组成串的最少个数 if(pos == -1)//c没有出现 { num = len / 2; if(len & 1) num++; printf("%d\n", num); continue; } for(int i = 0; i < pos; i++) str[len++] = 'f'; str[len] = '\n';//把字符f放在后面 num = 0; for(int i = pos; i < len;) { if(!flag)//不能组成 break; if(str[i] == 'c') { int sum = 0;//记录c后面f的个数 i++; while(str[i] == 'f' && i < len) { sum++; i++; } if(sum <= 1) { flag = false; break; } num++; } } if(flag) printf("%d\n", num); else printf("-1\n"); } return 0;}
0 0
- hdoj 5455 Fang Fang 【字符串简单题】
- hdoj-5455-Fang Fang
- Fang Fang hdoj 5455 (字符串)
- HDOJ 5455 Fang Fang(字符串)(沈阳网络赛)
- HDU 5455 Fang Fang(字符串模拟)
- hdu 5455 Fang Fang(字符串处理)
- HDU 5455 Fang Fang
- hdu 5455 Fang Fang
- HDU 5455 Fang Fang
- Fang Fang 思维题
- hdu 5455 Fang Fang(水题)
- hdu 5455 Fang Fang(暴力)
- Fang Fang
- Fang Fang
- HDU 5455 Fang Fang (水题 模拟)
- HDU 5455:Fang Fang 查cff个数
- hdu 5455 Fang Fang(思维)
- HDU 5455 Fang Fang(模拟)
- Android Studio中实战Jni开发
- Eclipse-----安装Subclipse插件
- windows下编译lua几种方法
- quartz定时任务
- Eclipse-----卸载Eclipse插件
- hdoj 5455 Fang Fang 【字符串简单题】
- 条款36:绝不重新定义继承而来的non-virtual函数
- weblogic11g 笔记
- Something about Binary search tree
- 成绩查询程序
- 升级xcode7 和 iOS9 后遇到的问题以及解决方案
- Java对象的建构顺序
- Java线程池
- JAV线程取消方式