这更像是一个数学/算法问题,而不是一个编程问题,但我希望你们无论如何都能提供帮助。
场景 #1:
<小时 />玩家 1 的物品栏中有 40
crates
。玩家 1 有 2
trucks
,1x
small
(容量:8个板条箱(1x
medium
(容量:16 个板条箱(
给定
capacity
:一辆
small
卡车可容纳 8 个板条箱一辆
medium
卡车可容纳 16 个板条箱一辆
large
卡车可容纳 30 个板条箱
玩家 1 需要多少辆卡车才能带走所有 40 个板条箱?
场景#2,如果卡车上已经有货物怎么办?
玩家 1 有 40 个板条箱和 2 辆卡车,如上所示。
如果
small
的负载中已经有 2 个板条箱,给他 8-2 = 6 个空间如果
medium
的负载中已经有 4 个板条箱,给他 16-4 = 8 个空间玩家 1 需要多少辆卡车才能拿走所有 40 个板条箱? 算法会是什么?
场景#3:没有卡车
玩家 1 有 0 辆卡车。 他需要多少辆卡车才能带走所有 40 个板条箱? 再说一次,你会使用的算法是什么?
场景#4:卡车太多
玩家 1 有 10 辆卡车,全部容量
large
。 运送所有 40 个板条箱需要多少辆卡车?
我在想。
场景 1,
2 trucks, 1 small = 8 and 1 medium = 16
8+16 = 24 crates
40 - 24 = 16 trucks?? // This looks wrong.
卡车的成本是更早完成的(你先买它们(。
我认为我的算法是错误的。 我需要将其除以基数吗? 我用卡车划分吗?
对此的任何帮助都将非常有帮助。
我建议使用以下算法(伪代码(
do truck = 1,number_trucks
current_capacity(truck) = total_capacity(truck) - loaded_crates(truck)
enddo
sort trucks according to current_capacity (biggest first)
remaining_crates = 40
do truck = 1,number_trucks
if(remaining_crates - current_capacity(truck) > 0)
load truck full
remaining_crates -= current_capacity(truck)
else
if(truck != last truck)
if(remaining_crates - current_capacity(truck+1) > 0)
load truck with remaining_crates
remaining_crates = 0
endif
else
load truck full
remaining_crates -= current_capacity(truck)
endif
endif
enddo
sort truck_class according to total_capacity(truck_class) (biggest first)
do truck_class = 1,number_truck_classes
while(remaining_crates - total_capacity(truck_class) > 0)
buy truck of truck_class
remaining_crates -= total_capacity(truck_class)
end while
if(truck_class == number_truck_classes && remaining_crates > 0)
buy truck of truck_class
endif
enddo
当您尝试解决此类事情以保留单元时,这非常有帮助
40 板条箱 - 24 板条箱 = 16 板条箱
玩家有 40 个板条箱,他有能力运输 24 个板条箱,所以他需要额外的卡车来运输剩余的板条箱。 据推测,运输 16 个板条箱的最有效方法是增加 1 辆中型卡车(您也可以获得 1 辆大卡车或 2 辆小卡车(。