分享

一个求最低折扣的题目

javaanddonet 发表于 2018-6-20 10:39:26 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 5787
现有ABCDE一共五本不同的书,每一本单价都是8元。现在有对应以下优惠活动:
1. 购买任何两本不同的书,打95折。
2. 购买任何三种不同的书,打9折。
3. 购买任何四种不同的书,打8折。
4. 购买五种不同的书,打75折。
有以下特殊情况:当你购买4本书的时候,如果其中有1本是和其他3本中的1本相同的书,那么这1本必须8元,不能和其他3本一样享受9折的折扣。
问题1:如下的订单,最优的价格是多少?
Book Name
Book Num
A
2
B
2
C
2
D
1
E
1


问题2:请用你喜欢的语言代码实现,给你一个订单,让你给出最优价格是多少。


已有(4)人评论

跳转到指定楼层
爱上树的猪 发表于 2018-6-20 17:48:43
先由高到低排个序,然后价格是(top1-top2)*8+(top2-top3)*2*8*0.95+(top3-top4)*3*8*0.9+(top4-top5)*4*8*0.8+top5*5*0.75
回复

使用道具 举报

javaanddonet 发表于 2018-6-21 10:28:54
本帖最后由 javaanddonet 于 2018-6-21 10:43 编辑
爱上树的猪 发表于 2018-6-20 17:48
先由高到低排个序,然后价格是(top1-top2)*8+(top2-top3)*2*8*0.95+(top3-top4)*3*8*0.9+(top4-top5)*4*8*0 ...

没有太明白,能说的详细点吗?按照什么由高到低排序?
按照购买的书的数目排序吗?2 2 2 1 1 这样排序?
然后按照你的公式:2-2   +    2-2   +     (2-1)*3*8*0.9     +     1-1     +     1*5*8*0.75    =    51.6
但是这个结果好像不对。其实最优的结算方式是将所有的8本书分为:1 1 1 1 和 1 1 1 1 都按照8折计算,得到的结果是:51.2

回复

使用道具 举报

爱上树的猪 发表于 2018-6-21 15:27:26
javaanddonet 发表于 2018-6-21 10:28
没有太明白,能说的详细点吗?按照什么由高到低排序?
按照购买的书的数目排序吗?2 2 2 1 1 这样排序? ...

好吧,我错了。。再想想
回复

使用道具 举报

bioger_hit 发表于 2018-7-21 20:01:47
爱上树的猪 发表于 2018-6-21 15:27
好吧,我错了。。再想想

可以任意组合,当然前提是满足上面的,并且数目足够。求出价格后,然后通过比较,价格最小的组合即为最优
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条