华为OD机试 – 分积木 – 二进制运算(Java 2023 B卷 200分)

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

Solo 和 koko 是两兄弟,妈妈给了他们一大堆积木,每块积木上都有自己的重量。现在他们想要将这些积分成两堆。

哥哥 Solo 负责分配,弟弟 koko 要求两个人获得的积木总重量”相等”(根据 Koko 的逻辑),个数不同,不然就会哭,但 koko 只会先将两个数转成二进制再进行加法,而且总会忘记进位(每个进位都忘记)如当 25 (11101) 加 11 (01011) 时,koko 得到的计算结果是 18 (10010) :

 11001
+ 01011
--------
  10010

Solo 想要尽可能使自己得到的积木总重量最大,且不让 koko 哭。

二、输入描述

第一行是一个整数 N(2≤N≤100),表示有多少块积木;

第二行为空格分开的 N 个整数Ci(1≤Ci≤106),表示第 i 块积木的重量。

三、输出描述

如果能让 koko 不哭,输出 Solo 所能获得积木的最大总重量; 否则输出“NO”。

四、解题思路

  1. 第一行输入一个数字,表示积木的数量n;
  2. 第二行输入n个数字,逗号隔开,表示积木的重量;
  3. 使用Java 8 Stream将其转为数组arr,并进行排序;
  4. 定义solo的总重量sum1,Koko错误的总重量sum2;
  5. 二进制按位异或运算;
  6. 如果可以平分,则输出Solo 所能获得积木的最大总重量, 否则输出“NO”。

五、Java算法源码

public class OdTest01 {
    // koko算法:将两个数转成二进制再进行加法,而且总会忘记进位
    // Solo 想要尽可能使自己得到的积木总重量最大,且不让 koko 哭
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.valueOf(sc.nextLine());
        int[] arr = Arrays.asList(sc.nextLine().split(" ")).stream().mapToInt(Integer::parseInt).toArray();

        // 升序
        Arrays.sort(arr);

        int min = arr[0];
        // solo的总重量
        int sum1 = min;
        // Koko错误的总重量
        int sum2 = min;

        for (int i = 1; i < arr.length; i++) {
            sum1 += arr[i];
            // 二进制按位异或运算
            sum2 ^= arr[i];
        }

        // 可以平分
        if (sum2 == 0) {
            System.out.println(sum1 - min);
        } else {
            // 无法平分
            System.out.println("NO");
        }
    }
}

六、效果展示

1、输入

3
3 5 6

2、输出

11

3、说明

🏆下一篇:华为OD机试 – 最长的顺子 – 感谢@禁止你发言提供的更简便算法(Java 2023 B卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

版权声明:本文为博主作者:哪 吒原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/guorui_java/article/details/134795465

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年12月29日
下一篇 2023年12月29日

相关推荐