您的位置:首页 > 编程语言

逻辑思维编程-----倒水问题

2018-01-06 15:31 337 查看
其基本思想是用:用小桶容量的倍数对大桶的容量进行取余。比如3升的桶和5升的桶得到4升水可以这样做:

3 % 5 = 3

6 % 5 = 1

9 % 5 = 4
成功得到4升水。

同样,用7升的桶和11升的桶得到2升水可以这样做:

7 % 11 = 7

14 % 11 = 3

21 % 11 = 10

28 % 11 = 6

35 % 11 = 2

成功得到2升水。

# -*- coding:utf-8 -*-
'''
思想:用小桶水不停的给大桶装水
用小桶容量的倍数对大桶的容量进行取余
'''
a_full_water = 7 #小桶
b_full_water = 11 #大桶
goal_water = 2 #目标取水量

a_over_water = 0 #A中剩余水
b_over_water = 0 #B中剩余水
list_count = []

while True:
if a_over_water == 0:
'''给A water 装水'''
a_over_water = a_full_water
else:
if a_over_water < b_full_water - b_over_water:
'''B 中剩余水 = 原来B中剩余水 + A 中的水'''
b_over_water += a_over_water
list_count.append(b_over_water)
a_over_water = 0
else:
'''A中剩余水大于B中可装的水'''
a_over_water = a_over_water + b_over_water - b_full_water

if a_over_water == goal_water:
list_count.append(a_over_water)
break
'''清空B桶中的水,在把A桶中的水倒入B桶中'''
b_over_water = a_over_water
list_count.append(b_over_water)
a_over_water = 0

print list_count
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: