0

这更像是一个数学/算法问题,而不是一个编程问题,但我希望你们能提供帮助。

场景#1:

玩家 1crates的库存中有 40 个。

玩家 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.

卡车的成本是较早完成的(您先购买它们)。

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

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

4

2 回答 2

1

当您尝试解决此类问题以保留单位时,这非常有帮助

40 箱 - 24 箱 = 16 箱

玩家有 40 个板条箱,他有能力运输 24 个板条箱,因此他需要额外的卡车来运输剩余的板条箱。据推测,运输 16 个板条箱的最有效方法是增加 1 辆中型卡车(您也可以使用 1 辆大型卡车或 2 辆小型卡车)。

于 2012-05-06T09:20:59.193 回答
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
于 2012-05-06T10:25:00.297 回答