• Python练习(Q5) 自动找零


    题目:(题目来源:程序员的算法趣题)

    当下,坐公交或者地铁时大部分人都是刷卡的。不过,时至今日还 在用现金支付的人还是比想象的多。本题我们以安置在公交上的零钱兑 换机为背景。 这个机器可以用纸币兑换到10 日元、50 日元、100 日元和500 日 元硬币的组合,且每种硬币的数量都足够多(因为公交接受的最小额度 为 10 日元,所以不提供 1 日元和 5 日元的硬币)。兑换时,允许机器兑换出本次支付时用不到的硬币。此外,因为在 乘坐公交时,如果兑换出了大量的零钱会比较不便,所以只允许机器最 多兑换出15 枚硬币。譬如用1000 日元纸币兑换时,就不能兑换出 “100 枚 10 日元硬币”的组合。求兑换1000日元纸币时会出现多少种组合?注意,不计硬币兑出的先后顺序思路。
    上代码:(正向思维)

    import numpy as np
    import datetime
    
    def PayCash(money):
        sum=0
        result=[]
        for i in range(15):
            #10元
            for     j in range(15):
                #50元
                for k in range(15):
                    #100元
                    for l in range(15):
                        #1000元
                        sum=i*10+j*50+k*100+l*500
                        count=i+j+k+l
                        if(sum==money and count<=15):
                            result.append( [i,j,k,l])
                            break
        if(len(result)==0):
        #吐回原来的钱
            return money 
        else:
            return result   
    print("*"*50)     
    start = datetime.datetime.now()                  
    result=PayCash(1000)  
    end = datetime.datetime.now()  
    spendtime=end-start 
    print("PayCash result:=")
    print(result) 
    print("Paycash result kind:=")
    print(len(result)) 
    print("PayCash(1000) Spend time:{}".format(spendtime.microseconds))                   
    print("*"*50)      
    View Code

    结果:

     

  • 相关阅读:
    struts.xml配置详解 内部资料 请勿转载 谢谢合作
    Struts框架2ActionError类 内部资料 请勿转载 谢谢合作
    Struts框架 内部资料 请勿转载 谢谢合作
    JDBC 内部资料 请勿转载 谢谢合作
    JSP 实现◆菱形 三角形△ 的输出
    JSP实现 乘法口诀输出
    GUID 全局统一标识符的介绍
    Java 基础 Map 练习题
    Java 异常处理 练习2
    Java 异常处理
  • 原文地址:https://www.cnblogs.com/banluqiaodaima/p/15611765.html
Copyright © 2020-2023  润新知