鱼C论坛

 找回密码
 立即注册
查看: 3360|回复: 7

喝啤酒问题用Python怎么解?

[复制链接]
发表于 2016-9-13 13:21:00 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jerryxjr1220 于 2016-9-13 22:48 编辑

假设:
2个空瓶换1瓶啤酒
4个瓶盖换1瓶啤酒
问:
你有100瓶啤酒
总共你可以喝多少瓶?

解题思路或程序都欢迎,不吝赐教!

更新:答案
  1. ===================== RESTART: C:\Python34\demo\test1.py =====================
  2. 初始有多少瓶酒?100
  3. 总共喝了395瓶酒
复制代码


代码见4楼


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-13 17:48:41 | 显示全部楼层
怎么解决的呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-13 19:56:48 | 显示全部楼层

这里没人解答,只能去问度娘了。
度娘抛出来的答案里貌似是最全的解答方案了,有了思路也就不难了
https://www.zhihu.com/question/35726119
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-13 22:43:35 | 显示全部楼层
自己写的一段python代码,仅对于不能借酒瓶和瓶盖的情况:

  1. def calc(x,y,z):
  2.         count = 0
  3.        
  4.         while x > 0 or y>1 or z>3:


  5.                 while x:
  6.                         x -= 1
  7.                         y += 1
  8.                         z += 1
  9.                         count += 1
  10.                 while y>1:
  11.                         x += 1
  12.                         y -= 2
  13.                 while z>3:
  14.                         x += 1
  15.                         z -= 4
  16.         return count

  17. x = int(input("初始有多少瓶酒?"))
  18. result = calc (x,0,0)
  19. print ("总共喝了%d瓶酒" % result)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-13 23:11:02 | 显示全部楼层
做了些小改进,可以知道剩余酒瓶和瓶盖
  1. ===================== RESTART: C:\Python34\demo\test1.py =====================
  2. 初始有多少瓶酒?100
  3. 总共喝了395瓶酒,剩余1个酒瓶和3个瓶盖。
复制代码


代码:
  1. def calc(x,y,z):
  2.   count = 0
  3.        
  4.   while x > 0 or y>1 or z>3:
  5.     while x:
  6.       x -= 1
  7.       y += 1
  8.       z += 1
  9.       count += 1
  10.     while y>1:
  11.       x += 1
  12.       y -= 2
  13.     while z>3:
  14.       x += 1
  15.       z -= 4
  16.   return [count, y, z]

  17. x = int(input("初始有多少瓶酒?"))
  18. l = calc(x,0,0)

  19. print ("总共喝了%d瓶酒,剩余%d个酒瓶和%d个瓶盖。" % (l[0],l[1],l[2]))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-14 11:15:40 | 显示全部楼层
如果不能预借,则:
  1. beer = 100
  2. bottle = 100
  3. cap = 100
  4. while bottle >= 2 or cap >= 4:
  5.     if bottle >= 2:
  6.         b = bottle // 2
  7.         beer += b
  8.         cap += b
  9.         bottle = b + bottle % 2
  10.     if cap >= 4:
  11.         c = cap // 4
  12.         beer += c
  13.         bottle += c
  14.         cap = c + cap % 4
  15. print('总共喝了%d瓶酒,剩余%d个酒瓶和%d个瓶盖。'%(beer, bottle, cap))
复制代码

如果可以预借,代数算了一下理论值:
  1. 100个酒+100个瓶+100个盖
  2. 2个瓶=1个酒+1个瓶+1个盖
  3. 4个盖=1个酒+1个瓶+1个盖
  4. 1个瓶=1个酒+1个盖
  5. 3个盖=1个酒+1个瓶
  6. 1个瓶=1个酒+1/3个酒+1/3个瓶
  7. 2/3个瓶=4/3个酒
  8. 1个瓶=2个酒
  9. 3个盖=1个酒+2个酒
  10. 1个盖=1个酒
  11. 即:100个酒+100个瓶+100个盖=400个酒
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-16 10:18:30 | 显示全部楼层
好难爱爱爱
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-16 10:19:33 | 显示全部楼层
啤酒问题有点难啊啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-30 08:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表