杭电 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'或者为空;
是否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;
}

浙公网安备 33010602011771号