s a v e save save 题解
题目在这里。
题目大意
有 n n n个字符串,求每一个字符串包含多少个 s o s sos sos,并求出包含最多个数的字符串。
解题方法
直接模拟,可以先求出最大的次数,再与每个次数进行比较,如果相同,就输出这个。
代码
#include<bits/stdc++.h>
using namespace std;
int n,c[101],la[101],lb[101],ans=0;
char a[101][201],b[101][201];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int l=1;
a[i][l]=getchar();
while(a[i][l]<'a'||a[i][l]>'z') a[i][l]=getchar();
while(a[i][l]>='a'&&a[i][l]<='z')
{
l++;
a[i][l]=getchar();
}
l--;
la[i]=l;
l=1;
b[i][l]=getchar();
while(b[i][l]<'a'||b[i][l]>'z') b[i][l]=getchar();
while(b[i][l]>='a'&&b[i][l]<='z')
{
l++;
b[i][l]=getchar();
}
l--;
lb[i]=l;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=lb[i]-2;j++)
if(b[i][j]=='s'&&b[i][j+1]=='o'&&b[i][j+2]=='s')
c[i]++;
for(int i=1;i<=n;i++) ans=max(ans,c[i]);
for(int i=1;i<=n;i++)
if(c[i]==ans)
{
for(int j=1;j<=la[i];j++) putchar(a[i][j]);
putchar(' ');
}
printf("\n%d",ans);
}