【发布时间】:2011-03-03 23:06:28
【问题描述】:
警告:我正在使用 ColdFusion,但我觉得这可以涵盖广泛的语言,因为这更像是一个编程问题,而不仅仅是一个 ColdFusion 问题。
好的,我的任务是实现代码以将促销应用到购物车中的商品。基本上,任何数量的商品都可以有任意数量的促销活动 - 即“购买 2 件 'ABC' 物品,获得 1 件 'ABC' 物品 50% 折扣”。但是,也可以“购买3 of item'ABC',免费获得1 of item'ABC'”。或者甚至是“购买 2 件 'ABC',获得 1 件 'XYZ' 50% 折扣”。
因此,想象一下在各种产品中开展更多这样的促销活动。
现在,我需要遍历所有可能的场景,以应用为客户带来最佳价值(最低小计)的促销(或促销)。
但是,我无法弄清楚如何编写将在所有可能的情况下运行的代码。我可以通过过滤掉那些不适用于购物车中商品的促销活动来缩小符合条件的促销活动的数量。显然,我也知道购物车中符合条件的商品数量。
假设我的购物车中有 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 中编程,但我可以很好地阅读/理解其他语言。
谢谢。
【问题讨论】:
-
如果一个产品有两个促销,你应该怎么做?两者都适用,还是放弃成本更高的那个?
-
我想知道这是否更适合programmers.so。在许多情况下,我认为您可以简单地为每个促销存储一个值,该值仅在商品价格发生变化时才会更新。然后,您可以遍历购物车并消除商品,因为您首先应用最高的绝对促销值。
-
老实说,在现实世界中,最大的销售总是用于最大的促销,只需尝试最大的促销 -> 如果可以再试一次,如果不去更小的等等。
-
+1 回答一个有趣的问题。还添加了人工智能标签,因为我怀疑这个问题可能是 NP 完全的。
-
也可以看到这个问题:stackoverflow.com/questions/426173/…
标签: loops coldfusion random recursion artificial-intelligence