Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 当你购买的每件商品都有10%的折扣券时,什么是最好的订购方式?_Algorithm_Haskell - Fatal编程技术网

Algorithm 当你购买的每件商品都有10%的折扣券时,什么是最好的订购方式?

Algorithm 当你购买的每件商品都有10%的折扣券时,什么是最好的订购方式?,algorithm,haskell,Algorithm,Haskell,商店在每次购买时都会发放一张代金券,可用于下次购买。凭单价值为您当前购买金额的10%。例如,在一次10美元的购买中,您将收到一张1美元的代金券,用于下次购买 你需要买n件东西。为了尽可能少花钱,你应该按什么顺序付款 所以,如果物品的价格是u0,u1。。。un-1,那么您实际支付的价格将是v0。。。vn-1,递归规则vk+1=max(0,uk+1-α×vk),v0=u0,在这种情况下,α=10/100 例如: 你需要购买3件物品,分别花费1美元、10美元和100美元。 那么你应该按以下顺序购买:$

商店在每次购买时都会发放一张代金券,可用于下次购买。凭单价值为您当前购买金额的10%。例如,在一次10美元的购买中,您将收到一张1美元的代金券,用于下次购买

你需要买n件东西。为了尽可能少花钱,你应该按什么顺序付款

所以,如果物品的价格是u0,u1。。。un-1,那么您实际支付的价格将是v0。。。vn-1,递归规则vk+1=max(0,uk+1-α×vk),v0=u0,在这种情况下,α=10/100

例如:

你需要购买3件物品,分别花费1美元、10美元和100美元。 那么你应该按以下顺序购买:$1,$100,$10

因此,你将付出代价

1+(100-1*10%)+(10-(100-1*10%)*10%)=1+99.9+0.01=100.91

这比任何其他订购都好

(当然,如果在某一点上你碰巧降价高于下一件商品的价格 如果你想买,商店不会给你钱。你只能付正数的钱)


我在阶乘时间内解决了这个问题,但找不到在合理时间内解决这个问题的通用算法

你能解释一下计算最终价格的算法吗?我把它理解为p0+max(_p1-a1,0)+max(p2-a2,0)+…+max(pn-an,0),其中p0,…,pn是基准价格,ai:=0.1*(p(n-1)-a(n-1))。就是这样。我会更新这个问题。另外,你确定存在一个有效的算法吗?这个问题显然是NP(或者更确切地说,决策版本是NP),但它听起来与一些NPC问题有点类似,因此它可能无法有效解决。如果这是一个家庭作业问题,你已经被告知有一个有效的算法存在,那当然是另一回事了。我实际上不确定是否有一个有效的算法存在。但我真的这么认为。事实上,如果你删除了不负数量的规则,一个简单的解决方案就存在了:你订购物品时,最后一个会比较便宜,最贵之前的,第二个之前的,第二个之前的,第二个之前的,当然,等等。我刚换了,谢谢。