注: 本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正
要将 50 元的软妹币兑换成 10 元、5 元和 1 元的钱币,问共有多少种不同的兑换方法?
让我们将上述问题稍微转化一下,则可以按以下方式理解,设三个变量xyz
变量 x 代表 10 元的可能取值:[0,10,20,30,40,50]
变量 y 代表 5 元的可能取值:[0,5,10,15,20,25,30,35,40,45,50]
变量 z 代表 1 元的可能取值:[0,1,2,…,50]
从xyz中取值进行组合需要满足条件x+y+z=50 元
代码实现:
count=0
for x in range(0,51,10):
for y in range(0,51,5):
for z in range(0,51):
if x+y+z==50:
count += 1
print('10元{}张 5元{}张 1元{}张'.format(x//10,y//5,z),end=' ')
if count%3==0:#每3个结果一行方便查看
print()
print('共有{}种方案'.format(count))
输出
上述是利用了步长实现,也可以换一个角度直接设10元、5元、1元对应的张数为xyz
x 取值范围:[0,5]
y取值范围:[0,10]
y取值范围:[0,50]
仍然是穷举法的思路,从xyz中取值进行组合需要满足条件10x+5y+z=50 元
代码实现
count=0
for x in range(0,6):
for y in range(0,11):
for z in range(0,51):
if 10*x+5*y+z==50:
count += 1
print('10元{}张 5元{}张 1元{}张'.format(x,y,z),end='\t\t')
if count%3==0:#每3个结果一行方便查看
print()
print('共有{}种方案'.format(count))
输出结果: