编程之美:买书问题

题目描述:

《哈利波特》系列书共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)

    原文作者:_王川
    原文地址: https://blog.csdn.net/starcuan/article/details/20384803
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞