文章目录
- 拔河比赛
- 题目描述
- 输入描述
- 输出描述
- 示例代码
拔河比赛
题目描述
公司最近准备进行拔河比赛,需要在全部员工中进行挑选。
选拔的规则如下:
- 按照身高优先、体重次优先的方式准备比赛阵容;
- 规定参赛的队伍派出10名选手。
输入描述
输入为N行员工信息,表示部门报名参加选拔的候选人信息,每行有两个数字,使用空格分隔,表示员工的身高、体重信息
如
181 70
182 70
表示两位候选员工,第一人身高181厘米,体重70公斤;第二人身高182厘米,体重70公斤
备注
输入数据范围:
- 成员身高、体重为int数据类型:
- 输入备选成员数量为N,10 ≤ N ≤ 100
输出描述
下一个大的数列表,以逗号分隔,例如: 2,3,6,-1,6
用例
输入 | 181 70 182 70 183 70 184 70 185 70 186 70 180 71 180 72 180 73 180 74 180 75 |
输出 | 186 70 185 70 184 70 183 70 182 70 181 70 180 75 180 74 180 73 180 72 |
说明 | 无 |
解析
- 这个题看着蛮难的,但是只要数据结构定义好了,其实做起来也蛮简单的
- 其实就是一个List 集合内装入一个实体类 这个实体类记录了选手的基本信息
- 给集合进行排序即可
示例代码
import java.util.ArrayList;
import java.util.Scanner;
//180 70
//198 60
//175 80
//175 70
//175 60
//198 90
//199 100
//170 55
//170 60
//170 65
//177 88
//185 80
//拔河比赛
public class T69 {
static class Person {
int w;
int h;
public Person(int w, int h) {
this.w = w;
this.h = h;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Person> persons = new ArrayList<>();
while (sc.hasNextLine()) {
String line = sc.nextLine();
if (line.equals(""))
break;
Person person = new Person(Integer.parseInt(line.split(" ")[1]), Integer.parseInt(line.split(" ")[0]));
persons.add(person);
}
persons.sort((p1, p2) -> p1.h != p2.h ? p2.h - p1.h : p2.w - p1.w);
for (int i = 0; i < 10; i++) {
System.out.println(persons.get(i).h + " " + persons.get(i).w);
}
}
}
代码运行示例