华为OD-D卷游戏分组

部门准备举办一场王者荣耀表演赛,有10名游戏爱好者参与,分为两队,每队5人。每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把10名参赛者分为实力尽量相近的两队。一队的实力可以表示为这一队5名队员的评分总和。

现在给你10名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两组的实力差绝对值。

例:10名参赛者的评分分别为5 1 8 3 4 6 7 10 9 2,分组为(1 3 5 8 10)(2 4 6 7 9),两组实力差最小,差值为1。有多种分法,但实力差的绝对值最小为1。

输入描述:

10个整数,表示10名参与者的游戏水平评分。范围在[1, 10000]之间

输出描述:

1个整数,表示分组后两组实力差绝对值的最小值。

题目解析:关键在于如何找到两组实力差最小的分组,想起以前小时候玩的斗鸡游戏,一般都是由实力最强的和实力第二强的来选队友,然后哪一队实力稍弱了,我们就让这一队先选就好。

一开始感觉有点像背包问题,我们算出总的游戏水平评分,然后把背包大小设置为总评分的一半往里面放就行,后来发现还需要保证每个组都是五人,这样就不太适用了。

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
//        int[] nums = new int[]{5, 1, 8, 3, 4, 6, 7, 10, 9, 2};
        // 处理数据
        Scanner scanner = new Scanner(System.in);
        int[] nums = new int[10];
        for (int i = 0; i < 10; i++) {
            nums[i] = scanner.nextInt();
        }
        // 按照实力排序放到栈中,这样每次取出来的都是现有最强的
        Arrays.sort(nums);
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < nums.length; i++) {
            stack.add(nums[i]);
        }
        // 统计两个队伍的总评分
        int sum1 = 0;
        int sum2 = 0;
        while (!stack.isEmpty()) {
            // 哪个队伍弱了,就先选
            if (sum1 <= sum2) {
                sum1 += stack.pop();
                sum2 += stack.pop();
            } else {
                sum2 += stack.pop();
                sum1 += stack.pop();
            }
        }
        System.out.println(Math.abs(sum2 - sum1));
    }
}
相关推荐
chao1898441 小时前
基于C# WinForm实现的仿微信打飞机游戏
游戏·微信·c#
張 ~1 小时前
上班好玩的桌面宠物软件游戏
游戏·宠物·桌面宠物游戏·bongo cat
hn小菜鸡6 小时前
LeetCode 1306.跳跃游戏III
算法·leetcode·游戏
无限码力8 小时前
华为OD机试真题 - 最长广播响应 (C++ & Python & JAVA & JS & GO)
华为od·华为od机试·od机考·华为od上机考试真题·华为od机试-最长广播响应·华为od-最长广播响应
咕噜企业分发小米9 小时前
腾讯云游戏音视频方案如何助力初创公司提升用户粘性?
游戏·音视频·腾讯云
da_vinci_x9 小时前
PS 消失点:贴图透视总画歪?无需建模,2D 也能“空间绘图”
游戏·aigc·设计师·贴图·技术美术·游戏美术·关卡设计
gis分享者9 小时前
学习threejs,生成复杂3D迷宫游戏
学习·游戏·3d·threejs·cannon·迷宫·cannon-es
zore_c9 小时前
【C语言】EasyX图形库——实现游戏音效(详解)(要游戏音效的看过来!!!)
c语言·开发语言·经验分享·笔记·游戏
我是华为OD~HR~栗栗呀21 小时前
(华为od)Python面经-20届
华为od
AA陈超1 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-18.生成火球术
c++·游戏·ue5·游戏引擎·虚幻