一个3毫升的空杯子,一个5毫升的空杯子,和一个8毫升装满水的杯子。 不可以使用其他容器,使5毫升和8毫升的杯子各装4毫升水(22)

问题

一个3毫升的空杯子,一个5毫升的空杯子,和一个8毫升装满水的杯子。
不可以使用其他容器,使5毫升和8毫升的杯子各装4毫升水

人工解决

3毫升 5毫升 8毫升
0 0 8
8→5 ### 0 5 3

5→3 ### 3 2 3

3→8 ### 0 2 6

5→3 ### 2 0 6

8→5 ### 2 5 1

5→3 ### 3 4 1

3→8 ### 0 4 4

在手工计算出之后

我大约用了15分钟从思考思路到编写代码,思考8分钟左右

想挑战的不要直接看代码,自己想一下

看看其他大神有没有新颖的解题思路请留言供大家观摩

code

# 问题:一个3毫升的空杯子,一个5毫升的空杯子,和一个8毫升装满水的杯子
# 不可以使用其他容器,使5毫升和8毫升的杯子各装4毫升水
import random

a = 0
b = 0
c = 8
while b != 4 or c != 4:
    d = random.randint(0, 5)
    if d == 0:
        if a > 0:
            if b < 3:
                b += a
                a = 0
    elif d == 1:
        if a > 0:
            if c < 6:
                c += a
                a = 0
    elif d == 2:
        if b > 0:
            if b > 3 - a:
                b -= 3-a
                a = 3
            else:
                a += b
                b = 0
    elif d == 3:
        if b > 0:
            if c < 8:
                if b+c < 9:
                    c += b
                    b = 0
                else:
                    b = b+c-8
                    c = 8
    elif d == 4:
        if c > 0:
            if a < 3:
                if c > 3-a:
                    c -= 3-a
                    a = 3
                else:
                    a += c
                    c = 0
    elif d == 5:
        if c > 0:
            if b < 5:
                if c > 5-b:
                    c -= 5-b
                    b = 5
                else:
                    b += c
                    c = 0
    print('a==', a, 'b==', b, 'c==', c, 'd==', d)
print('终于成功了 a==', a, 'b==', b, 'c==', c)
TravellerHui      

转发评论收藏加关注呦
转发评论收藏加关注呦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值