题目描述
公司最近准备进行拔河比赛,需要在全部员工中进行挑选。
选拔的规则如下:
- 按照身高优先、体重次优先的方式准备比赛阵容;
- 规定参赛的队伍派出10名选手。
请实现一个选拔队员的小程序。
输入为一个数组,记录了部门人员的身高、体重信息,如[身高,体重]的方式放置;
部门全部成员数量为大于10的一个数组。
要求输出一个size为10的二维数组。
输入描述
输入为N行员工信息,表示部门报名参加选拔的候选人信息,每行有两个数字,使用空格分隔,表示员工的身高、体重信息
如
181 70
182 70
表示两位候选员工,第一人身高181厘米,体重70公斤;第二人身高182厘米,体重70公斤
输出描述
要求输出一个10行的已经排序的参赛员工信息数据,每行有两个数字,使用空格分隔,表示员工的身高、体重信息如
182 70
181 70
备注
输入数据范围:
- 成员身高、体重为int数据类型:
- 输入备选成员数量为N,10 ≤ N ≤ 100
用例
输入 | 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 |
说明 | 无 |
题目解析
考察简单的排序。
2023.09.21
本题根据考友反馈,题目用例的输出格式可能存在问题
考试时可以考虑将多行输出 改成 一行输出 试试
JS算法源码
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
const employees = [];
while (true) {
try {
employees.push((await readline()).split(" ").map(Number));
} catch (error) {
break;
}
}
getResult(employees);
})();
function getResult(employees) {
employees.sort((a, b) => (a[0] != b[0] ? b[0] - a[0] : b[1] - a[1]));
for (let i = 0; i < 10; i++) {
console.log(employees[i].join(" "));
}
}
Java算法源码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static class Employee {
int height;
int weight;
public Employee(String s) {
int[] tmp = Arrays.stream(s.split(" ")).mapToInt(Integer::parseInt).toArray();
this.height = tmp[0];
this.weight = tmp[1];
}
@Override
public String toString() {
return this.height + " " + this.weight;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Employee> employees = new ArrayList<>();
// 假设题目以空行作为输入结束条件
// while (sc.hasNextLine()) {
// String line = sc.nextLine();
//
// if ("".equals(line)) {
// getResult(employees);
// break;
// } else {
// employees.add(new Employee(line));
// }
// }
// 没有额外的空行作为输入结束条件
while (sc.hasNextLine()) {
employees.add(new Employee(sc.nextLine()));
}
getResult(employees);
}
public static void getResult(ArrayList<Employee> employees) {
employees.sort((a, b) -> a.height != b.height ? b.height - a.height : b.weight - a.weight);
for (int i = 0; i < 10; i++) {
System.out.println(employees.get(i));
}
}
}
Python算法源码
# 全局变量
employees = []
# 输入获取
while True:
try:
employees.append(list(map(int, input().split())))
except:
break
# 算法入口
def getResult(employees):
employees.sort(key=lambda x: (-x[0], -x[1]))
for i in range(10):
print(" ".join(map(str, employees[i])))
# 算法调用
getResult(employees)
C算法源码
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int height;
int weight;
} Employee;
int cmp(const void *a, const void *b) {
Employee* A = (Employee*) a;
Employee* B = (Employee*) b;
return A->height != B->height ? B->height - A->height : B->weight - A->weight;
}
int main() {
Employee employees[MAX_SIZE];
int employees_size = 0;
int height, weight;
while(scanf("%d %d", &height, &weight) != EOF) {
employees[employees_size].height = height;
employees[employees_size].weight = weight;
employees_size++;
}
qsort(employees, employees_size, sizeof(Employee), cmp);
for(int i=0; i<10; i++) {
printf("%d %dn", employees[i].height, employees[i].weight);
}
return 0;
}
免责声明:
1、IT资源小站为非营利性网站,全站所有资料仅供网友个人学习使用,禁止商用
2、本站所有文档、视频、书籍等资料均由网友分享,本站只负责收集不承担任何技术及版权问题
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除下载链接并致以最深的歉意
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、一经注册为本站会员,一律视为同意网站规定,本站管理员及版主有权禁止违规用户
6、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和IT资源小站的同意
7、IT资源小站管理员和版主有权不事先通知发贴者而删除本文
评论0