和尚挑水‘吃’与python

每日一练

一个和尚去河边挑水,带了两只桶,一个能装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()函数两用法

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180627G1OV7V00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券