智力题之——两个杯子倒水(一个7升,一个3升,到出5升)

7升和3升的瓶子怎么能倒出5升的水?

针对这个小小的智力题,写了下面的小程序。

#include <iostream>
#include <string>

using namespace std;

struct CupofWater
{
    int Capacity;
    int currentWater;
    int RemainWater;
};

void NewBalance(struct CupofWater *cup1,struct CupofWater *cup2,const int resultofNeed)
{
    if (cup1->Capacity>0&&cup2->Capacity>0)
    {
        cup1->currentWater=cup1->Capacity;
        cup2->currentWater=cup2->Capacity;
        cup1->RemainWater=cup1->Capacity;
        cup2->RemainWater=cup1->Capacity;
        if (cup1->Capacity>cup2->Capacity)
        {
            //将杯子1里的水倒满杯子2
            while (cup1->RemainWater!=resultofNeed&&cup1->RemainWater>cup2->Capacity)
            {
                cup1->RemainWater=cup1->RemainWater-cup2->Capacity;
                cout<<"cup1剩余量"<<cup1->RemainWater<<"    "<<"cup2剩余量"<<cup2->RemainWater<<endl;
            }
            if (cup1->RemainWater>0&&cup1->RemainWater<cup2->Capacity)
            {
                cup2->currentWater=cup2->RemainWater=cup1->RemainWater;
                cup1->currentWater=cup1->Capacity;
                cup1->currentWater=cup1->currentWater-cup2->Capacity+cup2->currentWater;
                cout<<"cup1剩余量"<<cup1->RemainWater<<"    "<<"cup2剩余量"<<cup2->RemainWater<<endl;

                if (cup1->currentWater==resultofNeed)
                {
                    cout<<"成功匹配"<<endl;
                }
            }
        }
    }
}

int main()
{
    typedef struct CupofWater cupofWater;
    cupofWater* Cup1=new cupofWater();
    cupofWater* Cup2=new cupofWater();
    Cup1->Capacity=7;
    Cup2->Capacity=3;
    NewBalance(Cup1,Cup2,5);
    system("pause");
    return 0;
}

 

其实就是按照自己的思路写的,没什么技术含量,呵呵,希望大家多交流!

posted @ 2012-09-01 20:23  ll2008  阅读(10872)  评论(0编辑  收藏  举报