L1-034 点赞
#include<stdio.h> int main() { int m[1000] = {0}, a, b, c, d, e = 999, N, n; // 定义变量和数组 // m[1000]:用于统计每个数字出现的次数,初始化为0 // a, b, c, d, e:循环变量和临时变量 // N:输入的测试用例数量 // n:每个测试用例中的数字数量 // e:初始化为999,用于记录出现次数最多的数字的索引 scanf("%d", &N); // 输入测试用例的数量N for (a = 0; a < N; a++) { // 遍历每个测试用例 scanf("%d", &n); // 输入当前测试用例中的数字数量n for (b = 0; b < n; b++) { // 遍历当前测试用例中的每个数字 scanf("%d", &c); // 输入当前数字c m[c - 1]++; // 将数字c对应的计数加1(数组下标从0开始,所以是c-1) } } for (d = 999; d > 0; d--) // 从后向前遍历数组m,找到出现次数最多的数字 if (m[e] < m[d - 1]) // 如果当前数字的出现次数大于已知的最大次数 e = d - 1; // 更新e为当前数字的索引 printf("%d %d", e + 1, m[e]); // 输出结果:出现次数最多的数字(e+1)及其出现次数(m[e]) return 0; // 程序正常结束 }
注意:题目要求如果有并列,输出编号最大的,所以从后向前遍历。