这道题我碰到的坑还是很多的
1.如何处理二维数组
刚开始一脸迷茫,随后看了一篇题解,用按行输入的办法去处理每一行二维就转成了线性
这也是根据题目的要求,行和行之间并没有太大的联系。
gets试过不行,最终还是选择了getline和string字符串
2.怎样进行匹配
C++有特定的匹配函数,现在还不会,就想到了双指针。
3.怎样检测测试点
刚开始交了之后就卡在了测试点4很长时间,再次读题发现题目针对的信息是每一条即每一行
所以如果一行中出现了两次吃火锅那么只统计一次就行,还是读题的能力有待提高。
对于测试点3,题目说不超过80字符,肯定得开大,一般数组都有开大
Ps:一定要数对吃火锅那几个字符串的长度,这个bug真的是........
#include<iostream>
#include<cstring>
using namespace std;
char a[15]="chi1 huo3 guo1";
int n=0; //记录有几条
int cun=0; //记录符合条件的有几条
int prime=0; //既为初位有为开关
string s;
int main()
{
while (getline(cin, s), s != ".")
{
int t=0;
cun++;
for(int i=0;i<s.length();i++)
{
if(a[t]==s[i])
{
t++;
if(t==14)
{
if(prime==0)
{
prime=cun;
}
n++;
break;
}
}
else t=0;
}
}
if(prime!=0)
printf("%d\n%d %d",cun,prime,n);
else
printf("%d\n-_-#",cun);
return 0;
}