每日一练
一个和尚去河边挑水,带了两只桶,一个能装4斤,一个能装9斤,问题是如何装出6斤水?
作者:someone
编辑:楠楠
训练类型:循环判断
python环境:python3
训练时长:30mins
思路简介
1) 假设A桶装4斤,B桶装9斤,要使A+B桶装水总量为6斤,相当于考虑A和B桶装水的组合;
2) 思路:第一次:B桶装水9斤,倒满A桶,则B桶剩余5斤;第二次:倒掉A桶的水,再将B桶的5斤水倒满A桶,则B桶剩余1斤水;第三次:倒掉A桶的水,再将B桶1斤的水倒向A桶;第四次:B桶水装满9斤,向A桶倒满,此时A桶只需要3斤水,因此B桶剩余6斤水。
代码展示
#A0,B0表示两只桶分别能装水的量,C表示装水的目标量
deftiaoshui(A0,B0,C):
#判断A0和B0大小,将较大的值赋给B0
ifA0 > B0:
a = A0
A0 = B0
B0 = a
#第一次装水规则
A,B = 0,B0
i = 0 #记录装水次数
whileC not in [A, B]:
#判断A、B桶装水的情况
ifB - A0 > 0:
B = B - A0
A = A0
else:44
A = B
B = B0
A0 = A0 - A
i += 1
return A,B,i #返回最后A,B桶装水量及次数
#运行
tiaoshui(4,9,6)
#输出
(3, 6, 4)
#运行
tiaoshui(2, 6, 4)
#结果
(2,4,1)
思考
上述题目是google的一道算法题,读者可以思考解题思路和代码之间的关系。
明日问题
join()函数两用法
领取专属 10元无门槛券
私享最新 技术干货