这更像是一个数学/算法问题,而不是一个编程问题,但我希望你们无论如何都可以提供帮助。
场景#1:
玩家1的广告资源中有
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.
卡车的成本提前完成(您先购买)。
我认为我的算法错了。我需要将其除以基数吗?我用卡车把它分开吗?
对此的任何帮助都会非常有帮助。
答案 0 :(得分:1)
当你试图解决这些事情来保持单位
时,它会非常有用40个板条箱 - 24个板条箱= 16个板条箱
该玩家有40个箱子,他有能力运送24个板条箱,所以他需要额外的卡车来运输剩余的板条箱。据推测,运输16个板条箱的最有效方式是使用1辆额外的中型卡车(您还可以购买1辆大卡车或2辆小型卡车)。
答案 1 :(得分:1)
我建议使用以下算法(伪代码)
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