倒水问题(学校初试第4题)

作者在 2011-12-27 09:20:51 发布以下内容
三个12L、8L、5L的无刻度杯子,12L的已装满水,怎样倒可以倒出2个6L的水
12L的杯子为:a12,8L的杯子为:b8,5L的杯子为:c5.输出每次倒水后,每个杯子中水的容量。
a12   b8   c5
 12    0     0
  ..............
  ..............
  6     6    0
思路:
1,若b8为空,把a12的水倒满b8或者倒完a12内的水。
2,若c5为空,把b8的水倒满c5或者倒完b8内的水。
3,若c5满,则把c5的水倒入a12中。
4,直到a12,b8的水为6L
#include<stdio.h>
int main()
{
    int a12=12,b8=0,c5=0,t=0;
    printf("a12\tb8\tc5\n");
    printf("12\t0\t0\n");
    while(1)
    {
        if(0==b8)
        {
            t=(a12>8)?8:a12;
            b8+=t;
            a12-=t;
            printf("%d\t%d\t%d\n",a12,b8,c5);
        }
        if(0==c5)
        {
            t=(b8>5)?5:b8;
            c5+=t;
            b8-=t;
            printf("%d\t%d\t%d\n",a12,b8,c5);
        }
        if(8==b8)
        {
            t=b8+c5-5;
            b8=t;
            c5=5;
            printf("%d\t%d\t%d\n",a12,b8,c5);
        }
        if(5==c5)
        {
            c5=0;
            a12+=5;
            printf("%d\t%d\t%d\n",a12,b8,c5);
        }
        if(a12==6&&b8==6)
        {
            break;
        }
    }
    return 0;
}
VC++6.0运行通过。
结果如下:
a12 b8 c5
12   0   0
 4    8   0
 4    3   5
 9    3   0
 9    0   3
 1    8   3
 1    6   5
 6    6   0
这道题纠结了我好久,找到的答案太高深,看不懂。我从书上找到一个相似的题。我根据上面的思路写的。
有趣的问题 | 阅读 1711 次
文章评论,共0条
游客请输入验证码
浏览48171次