首页 > 代码库 > 题目1006:ZOJ问题
题目1006:ZOJ问题
- 题目描述:
- 对给定的字符串(只包含‘z‘,‘o‘,‘j‘三种字符),判断他是否能AC。
是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个‘o‘ 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个‘o‘或者为空;
- 输入:
- 输入包含多组测试用例,每行有一个只包含‘z‘,‘o‘,‘j‘三种字符的字符串,字符串长度小于等于1000。
- 输出:
- 对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
- 样例输入:
zojozojoozoojoooozoojoooozoojozojooooozojozojoooo
- 样例输出:
AcceptedAcceptedAcceptedAcceptedAcceptedAcceptedWrong AnswerWrong Answer
-----------------------------------------------------
思路:
- 首先判断输入是否正确,要满足1. 全是z、o、j ;2. z和j只能各有一个。
- 在输入正确的情况下,z前面o的个数记为a,z和j之间o的个数记为b,j之后o的个数记为c,满足c=a×b,并且b!=0时Accepted
-----------------------------------------------------
1 #include<stdio.h> 2 #include<string.h> 3 char l0[1001]; 4 int main(int argc, char const *argv[]) 5 { 6 int i,a,b,c; 7 int nz,nj; 8 int flag; 9 while(scanf("%s",l0)!=EOF)10 {11 nz=nj=flag=0;12 for(i=0;l0[i]!=‘\0‘;i++)13 {14 if(l0[i]==‘z‘)15 {16 nz++;17 a=i;18 }19 else if(l0[i]==‘j‘)20 {21 nj++;22 b=i;23 }24 else if(l0[i]!=‘o‘)25 flag=1;26 else27 continue; }28 if(nz!=1||nj!=1||flag)//判断输入是否正确29 puts("Wrong Answer");30 else31 {32 c=strlen(l0)-b-1;b=b-a-1;//假定z在j前面33 if(c==a*b&&b!=0)//a等于c的b,并且b!=034 puts("Accepted");35 else36 puts("Wrong Answer");37 }38 }39 return 0;40 }
--------------------------------------------------------
小结:
- 要求考虑到该考虑的所有情况
- c++相对c编程更方便些
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。