HDU--3788:ZOJ
来源:互联网 发布:淘宝手机红包在哪设置 编辑:程序博客网 时间:2024/05/20 05:56
1. 题目源地址:http://acm.hdu.edu.cn/showproblem.php?pid=3788
2. 思路分析:
这道题实际上是个水题,但是要弄清楚到底是如何水的不简单。我看了挺久才反应过来。
(1). zoj能AC;
(2). 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
(3). 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
其实第二点和第三点归纳起来就是说:满足 j后面o的个数 = z前面o的个数 * z和j两者中间的o的个数 则符合AC规则。不明白这个规则的可以自己在纸上比划,可以使用下图的例子:
好了,知道AC的规则之后就很容易写出代码了。
3. 源代码:
//HOJ--3788:ZOJ#include<iostream>#include<string.h>using namespace std;int main(){ char str[1010]; int len,i,temp1,temp2; bool flag; while(cin>>str) { len=strlen(str); flag=true; if(len<3) cout<<"Wrong Answer"<<endl; else { temp1=0; temp2=0; for(i=0;i<len;i++)//temp1记录z前面的字母数目 { if(str[i]=='z') { temp1=i; break; } } for(i=0;i<len;i++)//temp2记录j后面的字母数目 { if(str[i]=='j') { temp2=i; break; } } for(i=0;i<temp1;i++)//判断z前面是否全部为o { if(str[i]!='o') { flag=false; break; } } for(i=temp2+1;i<len;i++)//判断j后面是否全部为o { if(str[i]!='o') { flag=false; break; } } if(temp2-temp1==1)//如果z和j之间没有字符o则flag也为false flag=false; for(i=temp1+1;i<temp2;i++)//判断z和j之间是否全为o { if(str[i]!='o') { flag=false; break; } } if(flag) { if((len-temp2-1)!=temp1*(temp2-temp1-1))//不满足"j后面o的个数"是"z前面o的个数"的"中间的o的个数"倍 flag=false; } if(flag) cout<<"Accepted"<<endl; else cout<<"Wrong Answer"<<endl; } } return 0;}
0 0
- hdu 3788 zoj问题
- HDU 3788 ZOJ问题
- hdu 3788 ZOJ问题
- hdu-3788-ZOJ问题
- HDU--3788:ZOJ
- hdu-3788-ZOJ问题
- hdu 3788 ZOJ问题
- HDU 3788 ZOJ问题
- hdu 3788 zoj问题
- HDU 3788 ZOJ问题
- HDU 3788 ZOJ问题
- hdu 3788 ZOJ问题 (字符串)
- hdu--(zoj)
- hdu杭电3788 ZOJ问题
- hdu 1198/zoj 2412
- ZOJ 3547 & HDU 4059
- HDU 4334 && ZOJ 3631
- HDU 4118 && ZOJ 3659
- Bootstrap3.0学习第十九轮(JavaScript插件——标签页)
- projecteuler---->problem=34----Digit factorials
- 黑马程序员—总结过去的一年!站在学生时代的尾巴上!
- 黑马程序员_java多线程详解
- Day2,page20
- HDU--3788:ZOJ
- ASIHTTPRequest 详解, http 请求终结者
- 动态往标签节点中添加文本
- Orcale sql语句
- Java final
- Bootstrap3.0学习第二十轮(JavaScript插件——滚动监听)
- android程序更换图标安装后不变解决办法
- hdu 1158(dp)
- JVM并发机制——内存模型、内存可见性和指令重排序