警告:我正在使用 ColdFusion,但我觉得这可以涵盖广泛的语言,因为这更多是一个编程问题,而不仅仅是一个 ColdFusion 问题。
好的,我的任务是实现代码以将促销应用于购物车中的商品。基本上,任何数量的商品都可以有任意数量的促销事件 - 即“购买 2 个商品 'ABC',获得 1 个商品 'ABC' 50% 的折扣”。然而,也可以有“买 3 的元素 'ABC',免费获得元素 'ABC' 的 1”。甚至“购买 2 件 'ABC',获得 1 件 'XYZ' 50% 折扣”。
因此,想象一下在广泛的产品范围内有更多这样的促销事件。
现在,我需要遍历所有可能的场景以应用为客户提供最佳值(value)(最低小计)的促销(或促销)。
但是,我无法弄清楚如何编写将在所有可能的情况下运行的代码。我可以通过过滤掉那些不适用于购物车中的商品的促销事件来缩小符合条件的促销事件的数量。显然,我也知道购物车中符合条件的商品数量。
因此,假设我的购物车中有 5 件商品,其中 3 件有符合条件的促销事件(如上述商品)。 1 个项目有 3 个可能的促销事件,另一个有 4 个可能的促销事件,另一个有 2 个可能的促销事件。我的第一个想法是,遍历每个可能的促销,并在该循环中,遍历每个可能的符合条件的项目顺序:
1-2-3
1-3-2
2-1-3
2-3-1
3-1-2
3-2-1
...并每次应用促销,保存产生最低小计的组合。
这会起作用吗?是否矫枉过正?有人有更好的建议吗?
任何代码示例将不胜感激。虽然我是在 ColdFusion 中编程的,但我可以很好地阅读/理解其他语言。
谢谢你。
最佳答案
而不是循环遍历项目并寻找组合,您可以循环遍历促销和与购物车的模式匹配,也许更容易?
或者也许您可以为促销分配优先级,如果一个总是优于另一个?那么如果应用了一个,您可以跳过所有优先级较低的促销事件吗?
关于loops - 如何根据多个变量找到计算的最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5187753/