华为OD机试之拔河比赛(Java源码)

拔河比赛

题目描述

公司最近准备进行拔河比赛,需要在全部员工中进行挑选。
选拔的规则如下:

  1. 按照身高优先、体重次优先的方式准备比赛阵容;
  2. 规定参赛的队伍派出10名选手。
请实现一个选拔队员的小程序。 输入为一个数组,记录了部门人员的身高、体重信息,如[身高,体重]的方式放置; 部门全部成员数量为大于10的一个数组。 要求输出一个size为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
说明

解析

  1. 这个题看着蛮难的,但是只要数据结构定义好了,其实做起来也蛮简单的
  2. 其实就是一个List 集合内装入一个实体类 这个实体类记录了选手的基本信息
  3. 给集合进行排序即可

示例代码

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);
		}
	}
}

代码运行示例
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33183456/article/details/131322105