在游戏中计算卡车载货量
Posted
技术标签:
【中文标题】在游戏中计算卡车载货量【英文标题】:Calculating truck cargo capacity in a game 【发布时间】:2012-05-15 05:02:14 【问题描述】:这更像是一道数学/算法问题,而不是编程问题,但我还是希望你们能提供帮助。
场景 #1:
玩家 1 的库存中有 40 个
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.
卡车的成本是较早完成的(您先购买它们)。
我认为我的算法是错误的。我需要将其除以基数吗?用卡车分开吗?
对此的任何帮助都会非常有帮助。
【问题讨论】:
虽然玩家 1 的箱子数量是偶数,但它应该适用于奇数。卡车只能乘坐偶数(以 2 为底) 卡车不必满载。虽然这样会更容易。 【参考方案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
【讨论】:
这看起来很有希望!我将为此编写一个简单的应用程序,看看我是否可以让它工作。 希望我没有弄错。祝你好运。 没关系,我可以用它作为大纲。我希望我可以用一种简单的算法来完成这一切,但看起来需要编程。如果可以的话,我会在 excel 中执行此操作并输入不同的数字,但在一个小应用程序中执行此操作很好。 你可以使用模数来简化算法。但我会把它作为练习留给你。另外我认为这个算法非常简单,我的意思是我是在一个慵懒的星期天早上做的:) 我没有得到 'if truck != last truck' 部分。如果流量下降是因为当前卡车有足够的空间,那为什么要检查呢?【参考方案2】:当您尝试解决此类问题以保留单位时,这非常有帮助
40 个板条箱 - 24 个板条箱 = 16 个板条箱
玩家有 40 个板条箱,他有能力运输 24 个板条箱,因此他需要额外的卡车来运输剩余的板条箱。据推测,运输 16 个板条箱的最有效方式是增加 1 辆中型卡车(您也可以使用 1 辆大型卡车或 2 辆小型卡车)。
【讨论】:
它主要用于人工智能和后台处理。理想情况下,人工智能需要知道需要购买或拥有多少辆卡车才能运送货物。 如果在场景 4 中(卡车太多)你会得到一个负数?40 - (10 trucks @ 30 cr each = 300) = -260?
我可能犯了一个错误
在 0 辆卡车场景中。你仍然需要计算出你需要多少辆卡车。 40 crates - 0 = 40
以上是关于在游戏中计算卡车载货量的主要内容,如果未能解决你的问题,请参考以下文章