You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解满足双工时约束的最大可生产独特车辆数问题

可生产最大独特汽车数量的解题思路

问题核心

从带重复元素的工时数组中,选出两个无重叠元素的子集,分别满足子集总工时≤对应工厂的可用工时,求两个子集的总元素数最大值(每辆车只能被选一次,重复元素代表不同车辆但工时相同)。

关键思路

1. 先排序,优先聚焦小工时车辆

把工时数组从小到大排序,小工时的车辆更容易组合出更多数量,能帮我们更快找到最优解。比如测试用例1排序后为[3,4,5,5,6],测试用例2为[5,5,6]。

2. 从最大可能数量倒推验证

我们不需要枚举所有组合,而是从最大可能的总数量开始往下验证,找到第一个可行的数量就是答案:

  • 先判断数组总工时是否≤两个工厂工时之和,若是直接返回数组长度(所有车都能生产)。
  • 否则,从数组长度-1开始,依次尝试更小的数量,验证是否能将选出的k辆车拆分为两个子集,分别满足两个工厂的工时限制。

3. 验证时的剪枝与去重

验证k辆车的可行性时:

  • 优先选小工时的车辆,尝试拆分两组,一组凑≤工厂A工时,另一组凑≤工厂B工时。
  • 遇到重复工时的车辆,跳过重复的选择逻辑,避免重复计算相同组合(比如两个5,选第一个5后,就不要再以第二个5作为同位置的选择)。

示例验证

  • 测试用例1:数组总工时23,8+9=17<23,无法生产5辆车。尝试4辆车:选3,4,5,5,拆分3+5=8(工厂A)、4+5=9(工厂B),满足条件,返回4。
  • 测试用例2:数组总工时16=8+8,但无法将3辆车拆分为两组和均为8的子集。尝试2辆车:选5+6,分别放入两个工厂(5≤8、6≤8),满足条件,返回2。

优化实现方向

如果数组规模较大,可结合动态规划预计算单个工厂能容纳的最大车辆数:

  • 用dp[s]表示工时和为s时,最多能选的车辆数。
  • 枚举工厂A的所有可能子集和s1(≤工时A),对应车辆数k1,再从剩余元素中找工厂B能容纳的最大车辆数k2,取k1+k2的最大值。

内容的提问来源于stack exchange,提问作者ViridTomb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:30:53