这是一个数学/算法问题,而不是编程问题,但我希望你们无论如何都能提供帮助。
情景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

09-27 15:42