题解 | 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)即可
CVTE公司福利 672人发布