HDOJ 3788 ZOJ问题
2015-07-27 16:57
381 查看
ZOJ问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3286 Accepted Submission(s): 982
Problem Description
对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。
是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
Input
输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000;
Output
对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
Sample Input
zoj ozojo ozoojoo oozoojoooo zooj ozojo oooozojo zojoooo
Sample Output
Accepted Accepted Accepted Accepted Accepted Accepted Wrong Answer Wrong Answer
继续赛后清题,这题以前做过,还是跪了!!!
题解:可根据前面两条规则,推断出一个规律:
1.形成zoooj,两端有o或者没有o的情况;
2.形成oozoojoooo,z前面o的个数于z,j之间o的个数的积等于j后面o的个数。
具体代码如下:
#include<cstdio> #include<cstring> char str[1010]; int main() { int len,z,j,a,b,c,x,y,i; while(scanf("%s",str)!=EOF) { a=b=c=0; len=strlen(str); for(i=0;i<len;i++) { if(str[i]=='z') { a++; z=i;//标记z出现的位置 } else if(str[i]=='j') { b++; j=i;//标记j出现的位置 } else c++; } if(a==1&&b==1&&c!=0)//每个字符串里只有一个z和j { x=z;//统计z前面的o的个数 y=len-1-j;//统计j后面的o的个数 if(x==0&&y==0&&c!=0) printf("Accepted\n"); else if(c-x-y!=0&&(x*(c-x-y)==y)) printf("Accepted\n"); else printf("Wrong Answer\n"); } else printf("Wrong Answer\n"); } return 0; }
相关文章推荐
- linux_c 网络开发日记(2)makefile简介
- 安装cpplint
- 相对定位和绝对定位作业
- 文本预处理去除标点符号
- socket通信介绍
- 超详细单机版搭建hadoop环境图文解析
- TortoiseSVN使用指南
- hdu 1031 Design T-Shirt
- Android压缩图片到100K以下并保持不失真的高效方法
- 在2015年 开发一个 Web App 必须了解的那些事
- 控制台打印二叉树
- linux下统计程序/函数运行时间
- touch命令
- IOS-NSRunLoop
- android模拟器提示Unfortunately,Activity has stopped. 如何解决
- 各大oj介绍
- C++技巧之STL(持续更新)
- Linux内核进程切换
- 强制要求JVM始终抛出含堆栈的异常(-XX:-OmitStackTraceInFastThrow)
- 好久不发blog