竞赛讨论区 > 输入的区别导致ac和30%的差别

输入的区别导致ac和30%的差别

头像
Autunomy
发布于 2021-04-04 21:00:06 APP内打开
赞 0 | 收藏 0 | 回复3 | 浏览155
本题我用C++的cin输入数据只能过30%
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<unordered_map>
using namespace std;
typedef long long ll;
int main()
{
    int n,m,ans=0;
    cin>>n>>m;
    int a[100]={0};
    int b[100][100];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>b[i][j];//--------------------区别
        }
    }
    for(int i=0;i<m;i++)
    {
        int max=b[0][i];
        for(int j=1;j<n;j++)
        {
            if(max<b[j][i])
            {
                max=b[j][i];
            }
        }
        for(int j=0;j<n;j++)
        {
            if(b[j][i]==max)
            {
                a[j]++;
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        if(a[i]>0)
            ans++;
    }
    cout<<ans;
    return 0;
}
但是我用c的scanf就可以ac
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<cstdio>
#include<cmath>
#include<unordered_map>
using namespace std;
typedef long long ll;
int main()
{
    int n,m,ans=0;
    cin>>n>>m;
    int a[100]={0};
    int b[100][100];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%1d",&b[i][j]); //--------------------区别
        }
    }
    for(int i=0;i<m;i++)
    {
        int max=b[0][i];
        for(int j=1;j<n;j++)
        {
            if(max<b[j][i])
            {
                max=b[j][i];
            }
        }
        for(int j=0;j<n;j++)
        {
            if(b[j][i]==max)
            {
                a[j]++;
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        if(a[i]>0)
            ans++;
    }
    cout<<ans;
    return 0;
}
哪位大佬可以帮我解释一下吗?

3条回帖

回帖
加载中...
话题 回帖

本文相关内容

近期热帖

等你来战

查看全部

热门推荐