C++,先求出每一列的最大值,并且将最大值保存在数组max中,循环每一列。接着遍历每一行,从第一个数开始判断这个数是不是这一列中最大的,如果是,count+1,说明这一队伍得到过第一,再直接退出,继续判断下一行,即下一个队伍,如果循环完都不是,说明这一队没有得到过第一名,还是初始的count=0。
using namespace std;
#define int long long
#define endl '\n'
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,m,count=0;
cin>>n>>m;
char a[100][100]={0};
int max[100]={0};
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'>max[j])
max[j]=a[i][j]-'0';
}
}//统计纵向最大值,保存在数组中。
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){//从第一行开始判断每一个数是否是这一列的最大值
if((a[i][j]-'0')==max[j]){
count++;
break;//如果是最大值,退出,再下一行开始判断
}
}
}
cout<<count<<endl;
return 0;
}