编程之美:买书问题

题目描述:

《哈利波特》系列书共5卷,用0,1,2,3,4表示,每一卷单独销售价格为8欧元,假设采取以下折扣:

本数   折扣

2         5%

3        10%

4        20%

5        25%

其中一本书只能对应一个折扣,即买两本卷一不能享受5%的优惠。

分析:

1、动态规划法:

设F{Y1,Y2,Y3,Y4,Y5}其中Y1>=Y2>=Y3...因为每一卷书价格相等,所以Y1、Y2...只是表示买这5种书的个数

则状态转移方程为:

F{Y1,Y2,Y3,Y4,Y5}=

=0    (Y1=Y2=Y3=Y4=Y5=0)

=min{

5*8*(1-25%)+F{Y1-1,Y2-1,Y3-1,Y4-1,Y5-1},   if(Y5>=1)

4*8*(1-20%)+F{Y1-1,Y2-1,Y3-1,Y4-1,Y5},    if(Y4>=1)

3*8*(1-10%)+F{Y1-1,Y2-1,Y3-1,Y4,Y5},    if(Y3>=1)

2*8*(1-5%)+F{Y1-1,Y2-1,Y3,Y4,Y5},    if(Y2>=1)

8+F{Y1-1,Y2,Y3,Y4,Y5},    if(Y1>=1)

}

其中对任一F{a,b,c,d,e}均有a>=b>=c>=d>=e

整个动态规划耗费的空间:O(Y1*Y2*Y3*Y4*Y5)

时间复杂度:O(Y1*Y2*Y3*Y4*Y5)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值