1. 假如有100美分,兑换成任意一组硬币的所有唯一方式。
# 输出 Python 的每个字母 import _thread from time import sleep,ctime def squares(n=10): for i in range(1,n+1): print('Generating squares from 1 to %d' %(n**2)) yield i ** 2 def make_change(amount,coins=[1,5,10,25],hand=None): hand = [] if hand is None else hand if amount == 0: yield hand for coin in coins: #确保我们给出的硬币没有超过总额,且组合是唯一的 if coin > amount or (len(hand)> 0 and hand[-1]<coin): continue for result in make_change(amount - coin,coins=coins, hand=hand+ [coin]): yield result def main(): for way in make_change(100,coins=[10,25,50]): print(way) if __name__ == '__main__': main()