ACM题目————zoj问题
题目1006:ZOJ问题
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:20322
解决:3560
对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。
是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
</dd> </dl> <dl> <dt> 输入: </dt> <dd> 是否AC的规则如下:
1. zoj能AC;
2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000。
</dd> </dl> <dl> <dt> 输出: </dt> <dd> 对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
</dd> </dl> <dl> <dt> 样例输入: </dt> <dd> zoj ozojo ozoojoo oozoojoooo zooj ozojo oooozojo zojoooo</dd> </dl> <dl> <dt> 样例输出: </dt> <dd>
Accepted Accepted Accepted Accepted Accepted Accepted Wrong Answer Wrong Answer</dd> </dl>
竟然已经养成了这种写代码的风格了!就是那么顺手一打,改不过来了。
此题注意点:
1、确定输入的正确性——只能有一个z和一个j
2、z与j中间的o不能为0个(不能没有)
3、z前面的o 的数目与 z和j中间的o的数目 的乘积等于j后面的o的数目
//Asimple #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #include <string> #include <algorithm> #include <queue> #include <stack> #include <cmath> #define INF 0xffffff using namespace std; typedef long long ll; const int maxn = 1000+5; char str[maxn]; int n, m; int main(){ while( ~scanf("%s",str) ){ int len = strlen(str); int a=-1, b=-1; bool f = true; for(int i=0; i<len; i++){ if( str[i] == 'z' && a == -1){ a = i ; } else if( str[i] == 'j' && b == -1){ b = i ; } else if( str[i] != 'o' ){ f = false ; break; } } if( f ){ if( a != -1 && b != -1 && a + 1 < b && a * ( b - a - 1) == ( len -1 - b ) ){ printf("Accepted\n"); } else { printf("Wrong Answer\n"); } } else { printf("Wrong Answer\n"); } } return 0; }