浙大计算机研究生复试上机考试-2010年 zoj问题

ZOJ问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2984 Accepted Submission(s): 906


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

浙大计算机研究生复试上机考试-2010年 

HDU 3788
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;

问题分析:
满足条件二:只需要在z和j之间出现一个o即可;
满足条件三:假设满足条件二:oozojoo,带入条件三a=oo,b=o,c=oo,按照条件三执行一次,则变为oozoojoooo,继续执行一次可以得到oozooojoooooo,可以看出按照条件三每递推一次,b中o的个数加1,c中增加的o的个数为a中o的个数,得到递推关系式:
a中o的个数=x中o的个数;
只要c中o的个数=b中o的个数*a中o的个数得到答案:Accepted;

/*View Code
Problem : 3788 ( ZOJ问题 )     Judge Status : Accepted
RunId : 12763697    Language : C++    Author : GrantYuan
Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstring>
using namespace std;
char s[1005];
int pz,pj,numa,numb,numc;
int main()
{
  //  freopen("1in.txt","r",stdin);
    memset(s,0,sizeof(s));
    while(~scanf("%s",s)){
        int l=strlen(s);
        for(int i=0;i<l;i++)
        {
            if(s[i]=='z') pz=i+1;
            if(s[i]=='j') pj=i+1;
        }
        numa=pz-1;numb=pj-pz-1;numc=l-pj;
        if(numc==numa*numb&&pj-pz>1) printf("Accepted\n");
        else printf("Wrong Answer\n");
        memset(s,0,sizeof(s));
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值