我有一个 MySQL 表,其中包含可用于包装配置的产品,例如:
SKU PACK
xyz 25
abc 250
用户可以选择他们想要的商品数量(以 25 的倍数为单位)。我希望能够使用尽可能大的包装来填写订单。例如,如果用户想要 275 种产品,那么我会用 1 个 abc sku 和 1 个 xyz sku 填写订单。如果用户想要 225 种产品,那么我会用 9 xyz 填写订单。
我在处理问题时遇到问题,正在寻找有关方法的建议。伪代码或 PHP 会很棒。
最佳答案
这是经典的变体 bin packing problem .维基百科文章提供了很多关于所有变体的技术背景,但这是一个相当简单的变体。以下可能是一个不错的方法:
- 检索按包装大小降序排列的所有可能包装配置的数组。
- 遍历包装尺寸列表。
- 从元素数量中减去当前包装尺寸的整数倍,直到元素数量小于包装尺寸。计算该包装尺寸所需的数量。
- 当您到达列表的末尾时,其余的应该进入最小的包。
关于php - 使用 PHP 和 MySQL 进行订单优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513681/