华为OD机试真题-游戏分组-2023年OD统一考试(C卷)

一、题目

题目描述:
部门准备举办一场 王者荣耀表演赛,有10名游戏爱好者参与,分为两队,每队5人。每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把10名参赛者分为实力尽量相近的两队。一队的实力可以表示为这一队5名队员的评分总
和。现在给你10名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两组的实力差绝对值。例:10名参赛者的评分分别为5 1 8 3 4 6 7 1 0 9 2,分组为(1 3 5 8 1 0)(2 4 6 7 9),两组实力差最小,差值为1。有多种分法,但实力差的绝对值最小为1。


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

输出描述:
1个整数,输出分组后两组实力差绝对值的最小值


示例1
输入:
1 2 3 4 5 6 7 8 9 10
输出:

1
说明:10名队员分成两组,两组实力差绝对值最小为1。

二、思路

先计算10个数总和sum,5层for循环遍历并求和得到a,用sum减去a再减a,即可得到两组数据的差值,每次求完差,和之前的最小值比较,并返回

三、Java代码示例

package hw10.Test_100.Test_40;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test40_1 {
    /**
     * 游戏分组,求最小绝对值
     *
     * @param args
     */
    public static void main(String[] args) {
        // 输入
        Scanner in = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        int sum = 0;
        for (int j = 0; j < 10; j++) {
            int a = in.nextInt();
            list.add(a);
            sum += a;
        }

        int back = sum;

        for (int l1 = 0; l1 < 10; l1++) {
            for (int l2 = l1 + 1; l2 < 10; l2++) {
                int add12 = list.get(l1) + list.get(l2);
                for (int l3 = l2 + 1; l3 < 10; l3++) {
                    int add23 = add12 + list.get(l3);
                    for (int l4 = l3 + 1; l4 < 10; l4++) {
                        int add34 = add23 + list.get(l4);
                        for (int l5 = l4 + 1; l5 < 10; l5++) {
                            int add45 = add34 + list.get(l5);
                            back = Math.min(back, Math.abs(sum - add45 - add45));
                        }
                    }
                }

            }
        }

        System.out.println(back);
    }
}

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值