L1-6 吃火锅

题目链接

比赛时一直卡在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;
} 

猜你喜欢

转载自blog.csdn.net/weixin_43819762/article/details/110350562
今日推荐