50元兑换1元、2元、5元纸币的方案数 - 枚举算法求解
首先,我们可以设1元纸币的张数为x,2元纸币的张数为y,5元纸币的张数为z,则有以下限制条件:
- x + y + z = 25 (总张数为25张)
- x ≥ 1, y ≥ 1, z ≥ 1 (每种纸币不少于一张)
- x + 2y + 5z = 50 (兑换总面值为50元)
我们可以依次枚举x,y,z的取值,满足以上限制条件的方案即为一种有效的兑换方案。具体算法如下:
- 初始化方案数为0
- 依次枚举x的取值,从1到24
- 依次枚举y的取值,从1到12
- 计算z的取值,满足限制条件1和2
- 如果z的取值不合法,则跳过当前循环
- 如果x,y,z的取值满足限制条件3,则方案数加1
- 输出方案数
下面是使用Python实现的代码:
count = 0
for x in range(1, 25):
for y in range(1, 13):
z = 25 - x - y
if z < 1:
break
if x + 2*y + 5*z == 50:
count += 1
print(count)
输出结果为5,即共有5种有效的兑换方案。
原文地址: https://www.cveoy.top/t/topic/mudM 著作权归作者所有。请勿转载和采集!