带详细注释。注意!!!输入的是数字字符,统计每场比赛的最大解题数和比较时都要-'0',AC代码如下:

#include<iostream>
using namespace std;
char a[110][110];
int maxx[110];
int main()
{
    int n,m,cnt=0;
    cin>>n>>m;
    for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)
            cin>>a[i][j];
    
    for(int j=0; j<m; j++)  // 纵向遍历数组,统计每场比赛最大值
    {
        for(int i=0; i<n; i++)
        {
            if(a[i][j]-'0'>maxx[j])
            {
                maxx[j]=a[i][j]-'0';
            }
        }
    }
//     for(int i=0; i<m; i++) cout<<maxx[i]<<" ";  // 9 1 8 2 8 
    for(int i=0; i<n; i++)  // 遍历每一个队伍
    {
        for(int j=0; j<m; j++)  // 第i个队伍的每一场
        {
            if((a[i][j]-'0')==maxx[j])  // 当前场的解题数量等于当场最大解题数
            {
                cnt++;
                break;  // 拿过第一名了就跳出统计下一个队伍
            }
        }
    }
    cout<<cnt;
    return 0;
}