Python贪心算法-找零钱问题

In [12]: def main():
    ...:     d = [0.01,0.02,0.05,0.1,0.2,0.5,1.0]
    ...:     d_num = []
    ...:     s = 0
    ...:     temp =input('counts: ')
    ...:     d_num0 = temp.split(" ")
    ...:     for i in range(0,len(d_num0)):
    ...:         d_num.append(int(d_num0[i]))
    ...:         s+=d[i] * d_num[i]
    ...:     sum = float(input('change: '))
    ...:     if sum>s:
    ...:         print('change is big!')
    ...:         return 0
    ...:     s = s-sum
    ...:     i = 6 #从大的面值开始遍历
    ...:     while i>=0: #贪心算法的本质,每次向目标进一步
    ...:         if sum>=d[i]:
    ...:             n = int(sum/d[i])
    ...:             if n >d_num[i]:
    ...:                 n = d_num[i]
    ...:             sum = sum-d[i]*n
    ...:             print('用了%d个%fyuan coin'%(n,d[i]))
    ...:         i = i-1
    ...:
    ...:

In [13]: if __name__ =='__main__':
    ...:     main()
    ...:
counts: 1 1 1 1 1 1 1
change: 0.8
用了1个0.500000yuan coin
用了1个0.200000yuan coin
用了1个0.100000yuan coin
发布了101 篇原创文章 · 获赞 46 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_40539952/article/details/104212301