三个桶,分别为19升(空)、13升(满)、7升(满),请问最少多少步可以做到两个10升的??

void MoveOne()
{
    int A=13, B=7, C=0;
    int MaxA=13, MaxB=7, MaxC=19;

    //*******************************************************************
    B = 0;
    C = 7;
    cout<<"B->C: "<<A<<"  "<<B<<"  "<<C<<endl;
    
    A = 1;
    C = 19;
    cout<<"A->C: "<<A<<"  "<<B<<"  "<<C<<endl;
     
     //*******************************************************************
     while(C-MaxB != 10)
     {      
         while(1)
         {
             B = (C>MaxB) ? MaxB : C;
             C = C - B;
             cout<<"C->B: "<<A<<"  "<<B<<"  "<<C<<endl;
             
             int temp = A+B>MaxA ? A+B-MaxA : 0;
             A= A+B>MaxA ? 13 : A+B;
             B = temp;
             cout<<"B->A: "<<A<<"  "<<B<<"  "<<C<<endl;
             if(B != 0)
             {
                 break;
             }
         }
         
         C=A+C;
         A=0;
         cout<<"A->C: "<<A<<"  "<<B<<"  "<<C<<endl;
         
         A=B;
         B=0;
         cout<<"B->A: "<<A<<"  "<<B<<"  "<<C<<endl;
     }
     
     //*******************************************************************
     C = C-MaxB;
     B = MaxB;
     cout<<"C->B: "<<A<<"  "<<B<<"  "<<C<<endl;
     
     A= A+B;
     B=0;
     cout<<"B->A: "<<A<<"  "<<B<<"  "<<C<<endl;
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值