简单分析:前提每种至少一张
20元的可以至多有4张,10元的至多可以8,5元至多13张,1元至多65张.因为for i in range(n)只进行0-(n-1),所以改起始点为1,终点为n+1,总步长即为n。
count = 0 for i in range(1, 5): for j in range(1, 9): for k in range(1, 14): for n in range(1, 66): if 20 * i + 10 * j + 5 * k + n == 100: print(i, j, k, n) count += 1 print(count)
输出结果
C:\Users\Admin\Desktop\python\venv\Scripts\python.exe C:/Users/Admin/Desktop/python/main.py 1 1 1 65 1 1 2 60 1 1 3 55 1 1 4 50 1 1 5 45 1 1 6 40 1 1 7 35 1 1 8 30 1 1 9 25 1 1 10 20 1 1 11 15 1 1 12 10 1 1 13 5 1 2 1 55 1 2 2 50 1 2 3 45 1 2 4 40 1 2 5 35 1 2 6 30 1 2 7 25 1 2 8 20 1 2 9 15 1 2 10 10 1 2 11 5 1 3 1 45 1 3 2 40 1 3 3 35 1 3 4 30 1 3 5 25 1 3 6 20 1 3 7 15 1 3 8 10 1 3 9 5 1 4 1 35 1 4 2 30 1 4 3 25 1 4 4 20 1 4 5 15 1 4 6 10 1 4 7 5 1 5 1 25 1 5 2 20 1 5 3 15 1 5 4 10 1 5 5 5 1 6 1 15 1 6 2 10 1 6 3 5 1 7 1 5 2 1 1 45 2 1 2 40 2 1 3 35 2 1 4 30 2 1 5 25 2 1 6 20 2 1 7 15 2 1 8 10 2 1 9 5 2 2 1 35 2 2 2 30 2 2 3 25 2 2 4 20 2 2 5 15 2 2 6 10 2 2 7 5 2 3 1 25 2 3 2 20 2 3 3 15 2 3 4 10 2 3 5 5 2 4 1 15 2 4 2 10 2 4 3 5 2 5 1 5 3 1 1 25 3 1 2 20 3 1 3 15 3 1 4 10 3 1 5 5 3 2 1 15 3 2 2 10 3 2 3 5 3 3 1 5 4 1 1 5 84 Process finished with exit code 0
换零钞问题:一张100元,换成20,10,5,1面值的零钞,每种至少一张,共有哪些换法,总计多少种换法?
原文:https://www.cnblogs.com/wanglif/p/14669404.html