这是一个数学/算法问题,而不是编程问题,但我希望你们无论如何都能提供帮助。
情景1:
玩家1的库存有40crates
。
玩家1有2个trucks
1xsmall
(容量:8箱)
1xmedium
(容量:16箱)
给定capacity
:
卡车能装8个板条箱
卡车能装16个板条箱
卡车能装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