计算游戏中的卡车货物容量

时间:2012-05-06 09:00:45

标签: algorithm math cargo capacity-planning

这更像是一个数学/算法问题,而不是一个编程问题,但我希望你们无论如何都可以提供帮助。

场景#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.

卡车的成本提前完成(您先购买)。

我认为我的算法错了。我需要将其除以基数吗?我用卡车把它分开吗?

对此的任何帮助都会非常有帮助。

2 个答案:

答案 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