您的位置:首页 > 其它

hdu 3788 ZOJ问题 (字符串)

2014-12-10 13:21 309 查看

ZOJ问题

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 2881 Accepted Submission(s): 866

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年
很水的一道题,我愣是wa了八次。
很坑的题意:
显示需要考虑zj这种情况,然后需要判定只有一个z还有j实际上也是自己的马虎了!加油加油! 提上的意思就是zj 将原字符串,分成三个部分a,b,c,并且有a*b==c满足条件就AC,不满足条件就会WA。当然也可以用直接题上的条件!
代码如下:
#include<stdio.h>
#include<string.h>
char a[1010];
int main()
{
	int count1,count2,count3;
	while(~scanf("%s",a))
	{
		count1=count2=count3=0;
		int i,len=strlen(a);
		int flag=0;
		int cnt=0;
		for(i=0;i<len;++i)
		{
			if(flag==0)
			{
				if(a[i]=='o')
				{
					count1++;
					continue;
				}
				else if(a[i]=='z')
				{
					flag++;
					continue;
				}
				else if(a[i]=='j')
				{
					cnt=1;
					break;
				}
			}
				
			if(flag==1)
			{
				if(a[i]=='o')
				{
					count2++;
					continue;
				}
				else if(a[i]=='j')
				{
					flag++;
					continue;
				}
				else if(a[i]=='z')
				{
					cnt=1;
					break;
				}
			}
			if(flag==2)
			{
				if(a[i]=='o')
				{
					count3++;
					continue;
				}
				else if(a[i]!='o')
				{
					cnt=1;
					break;
				}
			}
		}
		if(!cnt)
		{
			if(flag==2&&count1*count2==count3&&count2)
			printf("Accepted\n");
			else
			printf("Wrong Answer\n");
		}
		else 
		printf("Wrong Answer\n");
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: