首页 > ACM题库 > 九度OJ > 九度-1006-ZOJ问题[解题代码]
2013
12-12

九度-1006-ZOJ问题[解题代码]

题目来源:2010年浙江大学计算机及软件工程研究生机试真题

题目描述:
对给定的字符串(只包含’z',’o',’j'三种字符),判断他是否能AC。

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

输入:
输入包含多组测试用例,每行有一个只包含’z',’o',’j'三种字符的字符串,字符串长度小于等于1000。
输出:
对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
样例输入:
zoj
ozojo
ozoojoo
oozoojoooo
zooj
ozojo
oooozojo
zojoooo
样例输出:
Accepted
Accepted
Accepted
Accepted
Accepted
Accepted
Wrong Answer
Wrong Answer

cpp 代码如下:
#include<stdio.h>
int main() {
	char a[1000];
	int i, x, y, n, k, k1, k2;
	while (scanf("%s", a) != EOF) {
		k1 = 0;
		k2 = 0;
		for (i = 0; i < 1000; i++) {
			if (a[i] == 'z') {
				x = i;
				k1++;
			}
			if (a[i] == 'j') {
				y = i;
				k2++;
			}
			if (a[i] == '\0') {
				n = i - 1;
				break;
			}
		}
		k = y - x - 1;
		if (k1 == 1 && k2 == 1 && k >= 1 && (x * k == n - y))
			printf("Accepted\n");
		else
			printf("Wrong Answer\n");
	}
	return 0;
}
/**************************************************************
	Problem: 1006
	User: coder
	Language: C
	Result: Accepted
	Time:30 ms
	Memory:912 kb
****************************************************************/


  1. 第一句可以忽略不计了吧。从第二句开始分析,说明这个花色下的所有牌都会在其它里面出现,那么还剩下♠️和♦️。第三句,可以排除2和7,因为在两种花色里有。现在是第四句,因为♠️还剩下多个,只有是♦️B才能知道答案。