Bootstrap

神仙打架:JAVA

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

牛村新开了一个系列赛,一个系列赛有m场比赛,比赛规则是解题数越多排名越前,如果前几名队伍解题数一样则会并列第一。

有n个神仙队伍完整参加了m场比赛,请问有几个队伍拿过第一名。

输入描述:

第一行输入两个整数n,m,表示队伍数量与m场比赛。

接下来n行输入一个数字矩阵,每行m个数字字符表示每场比赛的解题数量
1<=n,m<=100

输出描述:

输出一个整数表示拿过第一名的队伍数量

示例1

输入

3 5
91728
11828
11111

输出

3

代码:

import java.util.Scanner;

public class T4 {
    public static void main(String[] args) {
        // 创建一个Scanner对象用于读取输入
        Scanner sc = new Scanner(System.in);
        // 读取矩阵的行数n和列数m
        int n = sc.nextInt();
        int m = sc.nextInt();
        // 初始化一个n行m列的二维数组arr来存储字符的ASCII值
        int [][] arr = new int[n][m];
        // 初始化一个长度为m的一维数组max来存储每列的最大ASCII值
        int [] max =  new int [m];
        // 初始化计数器total,用于统计满足条件的行数
        int total = 0;
        // 遍历每一行
        for (int i = 0; i < n; i++) {
            // 读取当前行的字符串
            String str = sc.next();
            // 遍历当前行的每个字符
            for (int j = 0; j < m; j++) {
                // 将字符转换为其对应的ASCII值并存储到arr中
                arr[i][j] = (int)str.charAt(j);
                // 更新当前列的最大ASCII值
                if (arr[i][j] > max[j]) {
                    max[j] = arr[i][j];
                }
            }
        }
        // 再次遍历每一行,检查是否有任意一个元素大于等于该列的最大值
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                // 如果当前元素大于等于该列的最大值,则计数器加1,并跳出当前行的循环
                if (arr[i][j] >= max[j]) {
                    total++;
                    break;
                }
            }
        }
        // 输出满足条件的行数
        System.out.println(total);
    }
}
;