题目链接
比赛时一直卡在11分
刚刚不停地测 发现 我是判断的 a[0] == ' . ' 就停止
但是必须是 判断 a == " . " 就停止 这是一个判断点
还有一个就是
比赛的时候 我没有想到用 substr(start, length) 是挨个判断的 而且给那个 字符串加了一个 & 字符 当判断到这个字符时 就停止 这里应该是一个判断点
不一定能判断到那个字符 可能 吃火锅后面没有 空格或者标点符号
还有如果你是模拟的话 需要注意 一条信息里可能有两个 或者 多个 吃火锅 这算一条信息的
代码如下(修改后的正确的比赛时写的混乱代码
#include<iostream>
using namespace std;
const int maxn=1e3+10;
string a;
int b[maxn];
int main()
{
int i,j,k,x=0,m,y;
int flag=0;
int n=0;
int ans=0;
string c="chi1 huo3 guo1";
while(getline(cin,a))
{
if(a==".")
break;
n++;
k=0;
m=0;
for(i=0;i<a.size();i++)
{
if(a[i]=='c')
{
k=0;
flag=0;
for(j=i;j<a.size();j++)
{
if(k==13&&a[j]==c[k])
{
ans++;
break;
}
if(a[j]==c[k])
{
k++;
//cout<<k<<endl;
}
else
{
flag=1;
break;
}
}
if(flag==0)
{
x++;
b[x]=n;
break;
}
}
}
}
cout<<n<<endl;
if(x==0)
cout<<"-_-#"<<endl;
else
{
cout<<b[1]<<" ";
cout<<ans<<endl;
}
return 0;
}
简化后的
#include<iostream>
using namespace std;
string a;
int main()
{
int i,j,k,x;
int n=0;
int ans=0;
string c="chi1 huo3 guo1";
while(getline(cin,a))
{
if(a==".")
break;
n++;
for(i=0;i<a.size();i++)
{
if(a.substr(i,14)==c)
{
ans++;
if(ans==1)
x=n;
break;
}
}
}
cout<<n<<endl;
if(ans==0)
cout<<"-_-#"<<endl;
else
{
cout<<x<<" ";
cout<<ans<<endl;
}
return 0;
}