|
|
发表于 2016-1-16 22:59:10
|
显示全部楼层
本楼为最佳答案
 一共喝了20瓶。
- def calc():
- global beer, cap, bottle, newbeer
- newbeer = (cap // 4 if cap > 0 else 0)+ (bottle //2 if bottle > 0 else 0)
- cap = cap % 4 if cap > 0 else cap
- bottle = bottle % 2 if bottle > 0 else bottle
- cap += newbeer
- bottle += newbeer
- beer += newbeer
-
- beer = 5
- cap = 5
- bottle = 5
- print('beer=%s,cap=%s, bottle=%s'%(beer, cap, bottle))
- while cap >3 or bottle >1:
- calc()
- print('newbeer = %s'%newbeer)
- print('beer=%s,cap=%s, bottle=%s'%(beer, cap, bottle))
- #到此喝到15瓶
- #借一个瓶盖
- cap += 1
- calc()
- #还掉
- cap -= 1
- print('newbeer = %s'%newbeer)
- print('beer=%s,cap=%s, bottle=%s'%(beer, cap, bottle))
- calc()
- print('newbeer = %s'%newbeer)
- print('beer=%s,cap=%s, bottle=%s'%(beer, cap, bottle))
- #借一个瓶
- bottle += 1
- calc()
- bottle -= 1
- #还掉
- print('newbeer = %s'%newbeer)
- print('beer=%s,cap=%s, bottle=%s'%(beer, cap, bottle))
- #借两个瓶盖
- cap += 2
- calc()
- cap -= 2
- #还掉
- print('newbeer = %s'%newbeer)
- print('beer=%s,cap=%s, bottle=%s'%(beer, cap, bottle))
- #借一个瓶
- bottle += 1
- calc()
- bottle -= 1
- #还掉
- print('newbeer = %s'%newbeer)
- print('beer=%s,cap=%s, bottle=%s'%(beer, cap, bottle))
复制代码
输出
- beer=5,cap=5, bottle=5
- newbeer = 3
- beer=8,cap=4, bottle=4
- newbeer = 3
- beer=11,cap=3, bottle=3
- newbeer = 1
- beer=12,cap=4, bottle=2
- newbeer = 2
- beer=14,cap=2, bottle=2
- newbeer = 1
- beer=15,cap=3, bottle=1
- newbeer = 1
- beer=16,cap=0, bottle=2
- newbeer = 1
- beer=17,cap=1, bottle=1
- newbeer = 1
- beer=18,cap=2, bottle=0
- newbeer = 1
- beer=19,cap=-1, bottle=1
- newbeer = 1
- beer=20,cap=0, bottle=0
复制代码 |
|