蓝桥杯JavaB组2020年第4题分配口罩

题目:
某市市长获得了若干批口罩,给定每批口罩的数量,
市长要把口罩分配给市内的 2 所医院,由于物流限制,每一批口罩只能全部分配给其中一家医院。
市长希望 2 所医院获得的口罩总数之差越小越好。 请你计算这个差最小是多少?
答案提交
这是一道结果填空题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。(试题目录下有一个文件 mask.txt,内容与下面的文本相同)
9090400
8499400
5926800
8547000
4958200
4422600
5751200
4175600
6309600
5865200
6604400
4635000
10663400
8087200
4554000

题目解析:
首先15个数据,每次只能分配一个,且只能分配在A,B两个医院之间,一看题目就是一个非常典型的递归类的题目。
解决此题无非就是找变化,找重复,找出口,变化的是A,B两个医院的口罩数目在变,重复的是每一批口罩只能分配给A或者B,出口就是当k==15时,已经没有口罩了。
具体的递归内容:
https://blog.csdn.net/GX_666/article/details/122988079
题目代码:

package Test.Test_2020;
public class _4分配口罩 {
    static int[] arr = {9090400,8499400 ,5926800 ,8547000,
            4958200 ,4422600 ,5751200 ,4175600,
            6309600 ,5865200 ,6604400, 4635000,
            10663400 ,8087200 ,4554000};
    static int res=Integer.MAX_VALUE;
    public static void main(String[] args) {
                f(0, 0, 0);
        System.out.println(res);
    }

    private static void f(int k, int sum1, int sum2) {
        if(k== arr.length){
            int abs=Math.abs(sum1-sum2);
            res=res<abs?res:abs;
            return;
        }
        f(k+1,sum1+arr[k],sum2);
        f(k+1,sum1,sum2+arr[k]);
    }
}

题目答案:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值