逻辑思维编程-----倒水问题
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
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
相关文章推荐
- 编程挑战之倒水——问题在哪儿呢
- 跨平台Unicode编程的一点问题
- 解决AS3 Socket编程中安全策略问题
- WP7入门篇(三)编程环境搭建以及相关学习资源(解决安装问题篇)
- Unity的GPU编程问题解析
- 编程之美-中国象棋将帅问题
- 编程4 兔子生崽问题--一个Fibonacci数列
- 编程技巧之:VS2008关闭时候出现问题
- 有关eclipse+cdt+wingw5.1.4开发socket网络编程的问题
- 网络编程常见问题
- 【Java并发编程】之十八:第五篇中volatile意外问题的正确分析解答(含代码)
- 应聘复习基础笔记1:网络编程之TCP与UDP的优缺点,TCP三次握手、四次挥手、传输窗口控制、存在问题
- 编程之美---->字符串移位包含问题
- 编程备忘录 --- Cygwin下Telnet编程的问题
- spring入门编程问题集锦
- IOS开发编程中的问题小结(二)
- 常见的几个Qt编程问题的处理
- Andorid编程心得-利用代码解决Android WIFI休眠后连接断开的问题
- java经典编程题 爬楼梯问题的解答
- POJ 3414 Pots【bfs模拟倒水问题】