1249: 成功学生人数

题目描述

期末考试结束了,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 <stdio.h>
int main()
{ int n,m,i,j;
  int a[102][102];	
  int c[102];
  int max,sum=0;
  scanf("%d%d",&n,&m);
  for(i=1;i<=n;i++)	          /*此处输入*/
	{ for(j=1;j<=m;j++)
		scanf("%d",&a[i][j]);
	}
  int k=1;
   for(i=1;i<=m;i++)   /*这里是先列后行哦*/
   {   max=0;
      for(j=1;j<=n;j++) /*判断每一列的最大值*/
   	  {  if(a[j][i]>max)
		  max=a[j][i];	
	  }
	  c[k++]=max; /*存到数组c中*/
   }
   for(i=1;i<=n;i++)
   { for(j=1;j<=m;j++)
   	  { if(a[i][j]==c[j])  /*从第一行第一列开始判断*/
		 {          /*因为j变化,那么列变化,那么c中的数也变化,即转到下一个科目*/
		 	sum++;/*每一行的每一列表示一课成绩,然后如果跟c相等就表明成功,就加一*/
		 	break;/*然后退出列的循环开始第二行寻找*/
		 }	
	  }
   }		
   printf("%d",sum);
   return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值