Problem Description
Stone 最近要考概率论了,很奇葩的是概率论需要用到高数的知识,但是他忘记他有没有学过高数了。
现在 QAQ 给了他一个字符串,如果该字符串中能找到一段连续的 "gaoshu",那么 Stone 就可以想起以前学的高数,否则他只能重学。
那么问题来了,Stone 到底能不能想起来以前学的高数呢?
Input
输入数据有多组(数据组数不超过 100),到 EOF 结束。
每组数据输入一行长度不超过 1000 的字符串。
Output
如果字符串中包含至少一段连续的 "gaoshu",输出 "Good job!!!",否则输出 "QAQ"(不包含引号)。
Example Input
gaoshu ACM International Collegiate Programming Contest Probability Theory The Logic of Science I love gaoshu (are you kidding me?) gao liang shu le
Example Output
Good job!!! QAQ QAQ Good job!!! QAQ
Hint
Author
Stone
最裸的字符串匹配
遍历输入的字符串,如果为'g',判断从该位置之后是否为'aoshu',匹配成功跳出,否则从下一位置重新判断
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
char s[1010];
char s1[] = "gaoshu";
int main()
{
while(gets(s)!=NULL)
{
bool flag = 0;
int len = strlen(s), j, k;
for(int i = 0; i<len; ++i)
if(s[i]==s1[0])
{
for( j = 1, k = i+1; j<6&&k<len; ++j,++k)
if(s1[j]!=s[k])break;
if(j==6)
{
flag = 1;
break;
}
}
if(flag)printf("Good job!!!\n");
else printf("QAQ\n");
}
return 0;
}