NOI Online #3 入门组 第一题:最急救助

NOI Online #3 入门组 第一题:最急救助

  • 题目
  • 解析
  • 代码

题目

题目传送门

解析

其实这道题就是考察模拟(字符串+循环)

我们可以对每一个输入的文本串都求出包含字串sos的数量。

维护一个数Maxn,表示最多的sos的数量,同时维护一个字符串ans代表字串sos最多的所有文本串的名字。

对于每次输入的名字以及文本串,我们先求出文本串中sos的数量,如果当前文本串中的sos个数大于Maxn,我们把Maxn更新为当前sos的个数,同时用它的名字覆盖ans,如果当前文本串中sos的个数等于Maxn,将它的名字拼接到ans后面

代码

#include
using namespace std;
int main()
{
	int n;
	scanf("%d",&n);
	string ans="";
	int Maxn=-0x3f3f3f3f;
	for(int i=1;i<=n;i++)
	{
		int cnt=0;
		string Name,Code;
		cin>>Name>>Code;
		int Lc=Code.length();
		for(int i=0;i<(int)Lc-2;i++)
		{
			if(Code[i]=='s' && Code[i+1]=='o' && Code[i+2]=='s')
			{
				cnt++;
			}
		}
		if(cnt>Maxn)
		{
			ans=Name;
			Maxn=cnt;
		}else if(cnt==Maxn){
			ans=ans+" "+Name;
		}
	}
	cout<<ans;
	printf("\n%d",Maxn);
	return 0;
}

你可能感兴趣的:(C++,C++题解,Noi的题目)