为什么两个等价的操作一个RE70分一个AC
查看原帖
为什么两个等价的操作一个RE70分一个AC
507348
__vector__楼主2022/3/25 20:12

不要管为什么我连红题都要问
这份代码是 70 分:

#include <bits/stdc++.h>
using namespace std;
int n;
string name[1005];
string xh[1005];
int cnt[1005];
int main()
{
   // freopen("save.in","r",stdin);
 //   freopen("save.out","w",stdout);
    cin>>n;
    int imax=0;
    for(int i=1;i<=n;i++)
    {
        cin>>name[i];
        cin>>xh[i];
        for(int j=0;j<xh[i].size()-2;j++)
        {
            if(xh[i][j]=='s'&&xh[i][j+1]=='o'&&xh[i][j+2]=='s')
            {
                cnt[i]++;
            }
        }
        imax=max(imax,cnt[i]);
    }
    for(int i=1;i<=n;i++)
    {
        if(cnt[i]==imax)
            cout<<name[i]<<' ';
    }
    cout<<'\n';
    cout<<imax;
    return 0;
}

而这份代码能过:

#include <bits/stdc++.h>
using namespace std;
int n;
string name[1005];
string xh[1005];
int cnt[1005];
int main()
{
    ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//  freopen("save.in","r",stdin);
 // freopen("save.out","w",stdout);
    cin>>n;
    int imax=0;
    for(int i=1;i<=n;i++)
    {
        cin>>name[i];
        cin>>xh[i];
        int len=xh[i].size();
        for(int j=0;j<len-2;j++)
        {
            if(xh[i][j]=='s'&&xh[i][j+1]=='o'&&xh[i][j+2]=='s')
            {
                cnt[i]++;
            }
        }
        imax=max(imax,cnt[i]);
    }
    for(int i=1;i<=n;i++)
    {
        if(cnt[i]==imax)
            cout<<name[i]<<' ';
    }
    cout<<'\n';
    cout<<imax;
    return 0;
}

差异仅仅是第一份枚举的部分的 xh[i].size()-2 在第二份代码里用 len 来存了而已,他们有什么区别吗?

2022/3/25 20:12
加载中...