首页 文章

硬币改变制造者

提问于
浏览
0

我怎么写这个?

编写一个完整的python程序,允许用户输入0到99之间的数字,代表美分 . 然后程序会告诉你需要多少个四分之一,一角硬币,一分钱和几分钱来改变这个整数 . 例如,输出92将输出

这是我到目前为止所写的,我已经习惯了Java,所以我认为我混合了一些Java元素

a=(int(input("amount")

int p = 0
int n = 0
int d = 0
int q = 0

if(a % 10 != 5)   
    p = (a % 10)
    a -= p

q = a / 25       
    a -= q * 25

d = a / 10       
    a -= d * 10

n = a / 5       
    a -= n * 5

print ("Quarters :" + q)
print ("Dimes :" + d)
print ("Nickels :" + n)
print ("Pennies :" + p)

2 回答

  • 1

    这应该计算所需的不同类型硬币的数量:

    a=int(input("Enter amount: ")) #Ask for amount
    
    q = a // 25 #Calculate number of quarters
    a -= q*25 #Subtract value of quarters
    d = a // 10 #Calculate number of dimes
    a -= d*10 #Subtract value of dimes
    n = a // 5 #Calculate number of nickels
    a -= n*5 #Subtract value of nickels
    p = a #Calculate number of pennies
    
    
    
    print ("Quarters :" + str(q))
    print ("Dimes :" + str(d))
    print ("Nickels :" + str(n)) #Print out numbers of coins
    print ("Pennies :" + str(p))
    

    它首先询问金额,然后计算所需的季度数,然后减去需要的季度金额

  • 1

    一个贪婪的算法可以正常工作(因为硬币面额)(也就是说,你可以总是采用最小面额而不是总面额并最终获得最佳解决方案)

    def get_next(self,change_due):
        next_coin = max(x for x in [1,5,10,25] if x <= change_due)
        return change_due-next_coin,next_coin
    
    change_due = 99
    coins = []
    while change_due > 0:
        change_due,next_coin = get_next(change_due)
        coins.append(next_coin)
    
    print coins
    

    所有这些说你也可以像其他答案一样用数学解决 . 它还值得注意的是,如果你有一个7美分硬币,这个解决方案将不再给你最佳的解决方案(但另一个不会)

相关问题