我必须实现下面描述的算法,我有两个问题:
问题
我有三种长度的木板:10米,8米和5米。
我需要将这些地方从一个地方运到另一个地方。
我可以使用三种类型的卡车,卡车A,卡车B和卡车C.
每辆卡车最多可以装10个木板,但是卡车A可以装载所有类型的木板,而卡车B只能装载8米和5米的木板,卡车C只能装载5米的木板。
每辆卡车都有自己的运输木板价目表:
Truck A
1 plank $50
2-5 planks $100
6-10 planks $150
Truck B
1 plank $30
2-5 planks $90
6-10 planks $140
Truck C
1 plank $20
2-5 planks $80
6-10 planks $110
算法的目标:找到最便宜的方式来运输某些木板。
实施例: 我有5个10米的木板和1个8米的木板。
有两种可能的分布:
所以选项2是最好的。当我开始为更多木板解决这个问题时,可能的组合数量会增加。
特定的价格表可以改变,但是它永远都是真的,它永远不会节省金钱来分割相同尺寸的木板而不是需要的更多卡车。
所以:如果我有20块相同尺寸的木板,解决方案总是:2辆卡车,每10块木板。我不需要尝试使用3辆或更多卡车的组合。
如果我有21块相同尺寸的木板,我只需要尝试所有涉及3辆卡车的组合。
答案 0 :(得分:0)
这个问题是bin-packing问题的概括,这使得它成为NP难问题。请参阅此链接:http://en.wikipedia.org/wiki/Bin_packing_problem