智力題之——兩個杯子倒水(一個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;
}

 

其實就是按照自己的思路寫的,沒什么技術含量,呵呵,希望大家多交流!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM