HDOJ 3788 ZOJ问题(观察推断题)

    xiaoxiao2021-03-25  149

    ZOJ问题

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4358    Accepted Submission(s): 1305 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   Source

    思路:

    如题意。通过仔细推敲我们可以发现,只有当第一部分o的个数*第二部分o的个数=第三部分o的个数的时候,Accepted。并且第二部分的o的个数不为0,所以要对这个进行特判。。就死在了这上面。。

    代码:

    #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<cstdlib> using namespace std; int main() { char s[1000+5]; while(~scanf("%s",s)) { int len=strlen(s); int zpos=0,jpos=0; int preo=0,mido=0,aftero=0; int flag1=1,flag2=1; int zs=0,js=0; for(int i=0;i<len;i++) { if(s[i]=='z') { zpos=i; flag1=0; zs++; } if(s[i]=='j') { jpos=i; flag2=0; js++; } if(s[i]=='o'&&flag1&&flag2){ preo++; } if(s[i]=='o'&&!flag1&&flag2){ mido++; } if(s[i]=='o'&&!flag1&&!flag2){ aftero++; } } if(zs==1&&js==1&&mido!=0){ if(preo==0&&mido==0&&aftero==0){ printf("Wrong Answer\n"); continue; } if(preo==0&&mido!=0&&aftero==0){ printf("Accepted\n"); continue; } if(mido!=0&&mido*preo==aftero){ printf("Accepted\n"); continue; } else{ printf("Wrong Answer\n"); continue; } } else{ printf("Wrong Answer\n"); continue; } // if(preo==mido==aftero==0){ // printf("Wrong Answer\n"); // continue; // } // if(mido==1&&preo==aftero){ // printf("Accepted\n"); // continue; // } // if(preo==0&&aftero==0&&mido>=0){ // printf("Accepted\n"); // continue; // } // if(preo==0&&aftero!=0){ // printf("Wrong Answer\n"); // continue; // } // int num=aftero/preo; // if(num*preo==aftero&&mido==num){ // printf("Accepted\n"); // continue; // } // printf("Wrong Answer\n"); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-4201.html

    最新回复(0)