蓝桥杯·分配口罩·2020年真题Java

市长需要将多批口罩分配给两所医院,目标是使两家医院获得口罩数量之差最小。问题转换为0/1背包问题,使用深度优先搜索算法求解,最终找到最小差值为2400。
摘要由CSDN通过智能技术生成

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

题目分析:( 0/1背包问题、深度优先搜索算法)

题目要求分给两所医院的口罩总数之差最小,可以将问题转化为0/1背包问题,即现在有一个背包,背包容量无限大,要求向背包中装口罩,要求:背包中口罩和剩余口罩数之差最小。我们将所有数据存入arr数组,sum为所有口罩总数,用count计算背包中口罩数。接下来我们需要创建一个函数bfs,传入参数sum、用来计数的i(初值为0),以及记录背包中口罩数的count。对于每一批口罩,只有选择和并选择两种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值