题目描述
期末考试结束了,Ms.White拿到一个班级的成绩册,本班级有n个学生,本学期有m门课程,每个学生每门课的成绩是1到9之间的一个整数。
如果某个学生的某一门课程得了该课程的最高分(最高分可以不唯一),则可以说该学生在该课程上是最优的。如果一个学生至少在一门课程上是最优的,Mr.White就认为该学生是成功的。Mr.White想知道在他的班上有多少学生是成功的。你能帮帮他吗?
输入
输入第一行是两个整数n和m(1 <= n,m <= 100),n是学生人数,m是课程数;接下来n行,每行包含m个数字,表示一个学生的m门课程的成绩,数据之间用空格隔开。
输出
输出一个整数,表示班级中成功学生的人数。
样例输入 Copy
4 5
9 1 7 3 8
1 2 8 4 8
1 2 1 1 1
8 1 7 1 7
样例输出 Copy
3
提示
第1,2,3 号学生是成功的
其实也可以用数组来做
#include<iostream>
using namespace std;
struct student {
int grade[101];
};
int main()
{
student STU[1001];
int n, m, a[1001] = { 0 };
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> STU[i].grade[j];
for (int j = 1; j <= m; j++)
{
int max = STU[j].grade[1];
for (int i = 1; i <= n; i++)
{
if (STU[i].grade[j] >= max)
max = STU[i].grade[j]; //记录一纵列的最大值
}
for (int i = 1; i <= n; i++)
{
if (STU[i].grade[j] == max) //重新遍历一遍,找到与最大值相同的,存入数组
a[i]++;
}
}
int cnt = 0;
for (int i = 1; i <= n; i++)
if (a[i] > 0)
cnt++;
cout << cnt << endl;
return 0;
}