题解 | ZOJ问题

#include <iostream>
using namespace std;

int main() {
    string s;
    while (cin >> s) { // 注意 while 处理多个 case
        string tmp;
        int flg = 1;
        int cnt1=0;
        int cnt2=0;
        int cnt3=0;
        for (int i = 0; i < s.length(); i++)
        {
            if(s[i]=='o'){
            if(flg==1) cnt1++;
            else if(flg==2) cnt2++;
            else cnt3++;
            }
            if(s[i]=='z') flg=2;
            else if(s[i]=='j') flg=3;
        }
        //cout<<cnt1<<" "<<cnt2<<" "<<cnt3<<endl;
        if(cnt1==0 and cnt3==0) cout<<"Accepted\n";
        else if(cnt1!=0 and cnt3!=0 and cnt1*cnt2==cnt3) cout<<"Accepted\n";
         else cout<<"Wrong Answer\n";
    }
}
// 64 位输出请用 printf("%lld")

题目描述有点绕..但是看懂了以后还是蛮有意思的

如果有朋友看不懂题目,我来阐述下自己的描述或许能帮到你

条件1 “zoj“符合题意

条件2 “ozojo”“oozojoo”“ooozojooo”满足题意

条件3 若 [azbjc] 能通过,那么显然 [azbjc] 必然是满足条件1或者条件2的,那么azbojac能通过

转移方程 a'=a b'=b+1 c'=a+c

用n1,n2,n3分别记录z前面o的数量,z和j中间o的数量,j后面o的数量

条件1 说的是[0,1,0]满足题意

条件2 说的是[N,1,N]满足题意

条件3 说的是[0,1,0]可以推出[0,2,0]满足题意,从而[0,3,0]满足题意....

[N,1,N]可以推出[N,2,2N]满足题意,从而[N,3,3N]满足题意

综上,遍历后判定(cnt1==0 and cnt3==0)和(cnt1*cnt2==cnt3)即可

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务