【发布时间】:2015-12-13 17:24:08
【问题描述】:
鉴于商店中可用的产品列表,我需要将一组产品选择到我的购物车中,这样我的购物车价值应该是最大的。
限制就像,购物车的尺寸为l*w*h。选择的产品应单独且完全适合购物车,从而为购物车带来最大可能的价值。每个产品可以选择一个 1 项目。
我每个产品都有product id、price、l、w、ht、weight。这怎么可能实现???
我想出了一个逻辑如下。
- 计算购物车的体积
- 使用价格计算每立方厘米的产品体积和产品价值
- 根据 value/cucm 对产品列表进行排序
- 开始从排序列表中添加产品,例如 1st、2nd、3rd 等,直到购物车装满为止。
- 如果某个产品无法放入购物车,请跳过它并从排序列表中选择下一个可能的产品。
- 获取列表后,检查所选列表中的任何产品是否可以替换为体积较小但购物车价值更高的其他产品。
但这并没有让我获得具有最大购物车价值的正确产品列表。上述逻辑有什么问题?
【问题讨论】:
-
这听起来像是一个背包问题,您可以使用动态编程技术解决这个问题:en.wikipedia.org/wiki/Knapsack_problem。请记住,背包问题是 NP 完全问题,因此对于大型产品列表,该算法将需要很长时间。
-
您的逻辑问题在于,“我是否应该将此产品放入购物车”的决定不一定取决于价值/成本比,还取决于其他因素,例如“是否有替代产品 A 和如果我将它们放入购物车而不是产品 C,则 B 具有更高(综合)价值/成本比。