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

文章描述了一个基于身高和体重进行员工选拔的拔河比赛问题,输入为员工的身高体重数据,需要按规则选出前10名。解决方案是创建一个Person类存储信息,然后使用Java的排序功能对集合进行排序,最后输出前10名员工的身高体重。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拔河比赛

题目描述

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值