当前位置: 首页 > news >正文

华为OD机试真题【篮球比赛】

1、题目描述

【篮球比赛】
一个有N个选手参加比赛,选手编号为1~N(3<=N<=100),有M(3<=M<=10)个评委对选手进行打分。
打分规则为每个评委对选手打分,最高分10分,最低分1分。
请计算得分最多的3位选手的编号。
如果得分相同,则得分高分值最多的选手排名靠前
(10分数量相同,则比较9分的数量,以此类推,用例中不会出现多个选手得分完全相同的情况)。
【输入描述】
10个篮球队员的战斗力(整数,范围[1, 10000]),战斗力之间用空格分隔,如:10987654321
不需要考虑异常输入的场景。
【输出描述】
最小的战斗力差值,如:1
【示例1】
【输入】

10 9 8 7 6 5 4 3 2 1
【输出】
说明: .
1 2 5 9 10分为一队,3 4 6 7 8分为一队,两队战斗之差最小,输出差值1。
备注:球员分队方案不唯一 ,但最小战斗力差值固定是1。

2、解题思路

该题类似于将10个数分成两组,使得两组的数和之差最小。最小战斗力从差值0开始,不满足依次增加,差值为0,即将10个战斗力之和平分给两组,若无法平分则不满足,差值增加。若满足则利用回溯算法统计满足选出5个数且之后恰好为平均值的数。

3、参考代码

import java.util.Arrays;
import java.util.Scanner;/*** @Author * @Date 2023/6/11 15:15*/
public class 篮球比赛 {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {int[] array = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();int totalSum = 0;for (int arr : array) {totalSum += arr;}// 从0开始找最小差值战斗力for (int i = 0; i <= totalSum; i++) {int target = (totalSum - i);if (target % 2 == 0) {  // 总和减去差值可以被平分为两组if (dfs(array, 0, target / 2, new boolean[10])) {System.out.println(i);  // 能匹配则输出break;}}}}}// 回溯 遍历搜索分配球员public static boolean dfs(int[] array, int startIndex, int sum, boolean[] used) {if (startIndex > 5 || sum < 0) {return false;}if (startIndex == 5 && sum == 0) {return true;}for (int i = 0; i < array.length; i++) {if (used[i]) {continue;}used[i] = true;if (dfs(array, startIndex + 1, sum - array[i], used)) {return true;}used[i] = false;  // 回溯 不选}return false;}
}

4、相似题目

(1)代码随想录回溯算法组合题型

http://www.lryc.cn/news/160711.html

相关文章:

  • sublime text 格式化json快捷键配置
  • Spring Cloud 面试题总结
  • 如何实现24/7客户服务自动化?
  • 2022年12月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【Spring Cloud系列】 雪花算法原理及实现
  • Postgresql 阿里云部署排雷
  • l8-d10 TCP协议是如何实现可靠传输的
  • 9月9日扒面经
  • 项目实战:ES的增加数据和查询数据
  • vs code调试rust乱码问题解决方案
  • 大数据课程K22——Spark的SparkSQL的API调用
  • 数据结构学习系列之顺序表的两种删除方式
  • 机器学习笔记之最优化理论与方法(七)无约束优化问题——常用求解方法(上)
  • ES-索引管理
  • linux中常用shell脚本整理
  • 介绍PHP
  • selenium+find_elements用法
  • 1DM+下载器_11.2.1魔改增强版下载
  • vue3:3、项目目录和关键文件
  • ChatGPT实战与私有化大模型落地
  • 10分钟从实现和使用场景聊聊并发包下的阻塞队列
  • Python入门学习13(面向对象)
  • 哈工大计算机网络课程网络安全基本原理之:身份认证
  • 海外代购系统/代购网站怎么搭建
  • go-micro
  • 安装GPU驱动,CUDA Toolkit和配置与CUDA对应的Pytorch
  • JavaScript单例模式
  • centos下安装jenkins.war
  • App线上网络问题优化策略
  • PDF 工具箱