【PAT乙级】1107 老鼠爱大米 (20 分) C语言实现
翁恺老师曾经设计过一款 Java 挑战游戏,叫“老鼠爱大米”(或许因为他的外号叫“胖胖鼠”)。每个玩家用 Java 代码控制一只鼠,目标是抢吃尽可能多的大米让自己变成胖胖鼠,最胖的那只就是冠军。
因为游戏时间不能太长,我们把玩家分成 N 组,每组 M 只老鼠同场竞技,然后从 N 个分组冠军中直接选出最胖的冠军胖胖鼠。现在就请你写个程序来得到冠军的体重。
输入格式:
输入在第一行中给出 2 个正整数:N(≤100)为组数,M(≤10)为每组玩家个数。随后 N 行,每行给出一组玩家控制的 M 只老鼠最后的体重,均为不超过 10^4 的非负整数。数字间以空格分隔。
输出格式:
首先在第一行顺次输出各组冠军的体重,数字间以 1 个空格分隔,行首尾不得有多余空格。随后在第二行输出冠军胖胖鼠的体重。
输入样例:
3 5
62 53 88 72 81
12 31 9 0 2
91 42 39 6 48
输出样例:
88 31 91
91
代码实现:
#include <stdio.h>
#include <string.h>
int main() {
int n = 0, m = 0;
if (scanf("%d %d", &n, &m) == 2) {
// 声明并初始化每组最大数的数组
// int max_arr[101] = {0};
int max_arr[n];
// 初始化数组
memset(max_arr, 0, sizeof(int) * n);
// 每组玩家的输入 && 每组最大数的计算
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int temp;
if (scanf("%d", &temp)) {
if (max_arr[i] < temp) {
max_arr[i] = temp;
}
}
}
}
// 输出每组最大的数
for (int i = 0; i < n; i++) {
if (i == n - 1) {
printf("%d", max_arr[i]);
} else {
printf("%d ", max_arr[i]);
}
}
printf("\n");
// 获取整体最大的数
int max_num = max_arr[0];
for (int i = 0; i < n; i++) {
if (max_num < max_arr[i]) {
max_num = max_arr[i];
}
}
printf("%d\n", max_num);
}
return 0;
}