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; }
其实就是按照自己的思路写的,没什么技术含量,呵呵,希望大家多交流!