A、B两队进行比赛,每队各有多名队员及其分数(分数不重复),使用A、B队所有队员得分的TOP 3来判断两队输赢,在TOP 3中拥有更多人数的队获胜。写程序实现该过程。
输入格式:
A队人数
A队每人得分
B队人数
B队每人得分
输出格式:
前三甲分数
赢的队
输入样例:
5
22 33 44 55 11
4
12 32 42 52
输出样例:
55 52 44
A
代码长度限制
16 KB
时间限制
400 ms
内存限制
答案:使用ArrayList来完成
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<Integer> arrayListA = new ArrayList<>();
ArrayList<Integer> arrayListB = new ArrayList<>();
ArrayList<Integer> arrayListC = new ArrayList<>();
int mumA = 0;
int sumB = 0;
int A = in.nextInt();
boolean flag = true;
// 读取第一个数组
for (int i = 0; i < A; i++) {
arrayListA.add(in.nextInt());
}
// 读取第二个数组
int B = in.nextInt();
for (int i = 0; i < B; i++) {
arrayListB.add(in.nextInt());
}
// 合并两个数组
arrayListC.addAll(arrayListA);
arrayListC.addAll(arrayListB);
// 将合并后的数组转为数组并排序
Object[] array = arrayListC.toArray();
Arrays.sort(array);
// 取出最大的三个元素
for (int i = array.length - 1; i >= array.length - 3; i--) {
if (flag) {
System.out.print(array[i]);
flag = false;
} else {
System.out.print(" " + array[i]);
}
// 判断元素来自哪个数组
if (arrayListA.contains(array[i])) {
mumA++;
} else if (arrayListB.contains(array[i])) {
sumB++;
}
}
// 输出结果
if (mumA > sumB) {
System.out.println("\n" + "A");
}
else{
System.out.println("\n" + "B");
}
}
}