zoukankan      html  css  js  c++  java
  • 买书问题

    在节假日的时候,书店一般都会做促销活动。由于《哈利波特》系列相当畅销,店长决定通过促销活动来回馈读者。在销售的《哈利波特》平装本系列中,一共有五卷,用编号0, 1, 2, 3, 4来表示。假设每一卷单独销售均需要8欧元。如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多。假设具体折扣的情况如下:

    本数

    折扣

    2

    5%

    3

    10%

    4

    20%

    5

    25%

     

    在一份订单中,根据购买的卷数以及本书,就会出现可以应用不同折扣规则的情况。但是,一本书只会应用一个折扣规则。比如,读者一共买了两本卷一,一本卷二。那么,可以享受到5%的折扣。另外一本卷一则不能享受折扣。如果有多种折扣,希望能够计算出的总额尽可能的低。

    要求根据这样的需求,设计出算法,能够计算出读者所购买一批书的最低价格。

    #! /usr/bin/python
    # coding=utf-8
    import random
    from itertools import groupby
    def main():
        arr = [random.randint(0,4) for i in range(random.randint(1,10)) ]
        print arr
        discount(arr)
        
    def discount(arr):
        arr =sorted(arr)
        data = [len(list(g)) for k,g in groupby(arr)]
        table = [0,5,10,20,25]
        total = 0
        for i in range(max(data)):
            data = [i-1 for i in data if i]
            l = len(data)
            price = l * 8 * (100 - table[len(data) - 1]) / 100
            print "%s,%s * 8 - %s%% = %s" % (data,l, table[len(data) - 1], price)
            total += price
        print total
            
    
    if __name__ == '__main__':
        main()
        
        
    

      

  • 相关阅读:
    通过网页源代码看“饭否”的网站架构
    SD2.0课程等待时候的摘抄
    SD2.0阿里妈妈的研发过程
    转:编程8字专静谦筹悟慎透恒
    SD2.0第一天总体印象
    SD2.0《Web2.0网站性能调优实践》貌似是抄袭的文章
    SD2.02个课合成一个课
    SD2.0第2天总体印象
    variant
    [zz]C++程序员的阅读清单
  • 原文地址:https://www.cnblogs.com/goodspeed/p/2890710.html
Copyright © 2011-2022 走看看