杭电 Problem 3788 ZOJ问题

ZOJ问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3624    Accepted Submission(s): 1086


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

 这道题不是太难,主要讨论a、b、c之间的关系,但是注意a、b、c数值的讨论。

#include <cstdio>
#include <cstring>
#define MAX_N 10005
using namespace std;
int main()
{
	char str[MAX_N];
	while (scanf("%s", &str) != EOF) {
		int a, b, c;
		int z = 0, j = 0;
		bool flag = false;
		int len = strlen(str);
		for (int i = 0; i < len; i++) {
			if (str[i] == 'z')	z++;
			if (str[i] == 'j')	j++;
		}
		if(z != 1 || j != 1)	flag = true;
		if (flag) {
			printf("Wrong Answer\n");
			continue;
		}
		for (int i = 0; i < len; i++) {
			if (str[i] == 'z') {
				a = i;
			}
			if (str[i] == 'j') {
				b = i - a - 1;
				c = len - i - 1;
				break;
			}
		}
		if (a == 0 && c == 0 && b != 0)	printf("Accepted\n");
		else if (a * b == c && c)	printf("Accepted\n");
		else printf("Wrong Answer\n");
	}
	return 0;
}

posted @ 2016-03-16 19:56  zprhhs  阅读(112)  评论(0)    收藏  举报
Power by awescnb