如题。
还有,用c#该如何实现呢?

解决方案 »

  1.   

    const BigCupSize = 6, SmallCupSize = 5;
    int iSrcRemain = 0, iDestRemain = 0, iTurn = 0;
    while (iDestRemain != 3)
    {
    iSrcRemain = BigCupSize;  //大杯倒满水
    iSrcRemain = (iDestRemain + BigCupSize) % SmallCupSize;    //倒入小杯后大杯剩余
    iDestRemain = iSrcRemain; //往小杯中倒入大杯中的剩余
    iTurn++;
            printf("第%d次,小杯剩余%d;\n", iTurn, iDestRemain); 
    }
     
    printf("ok!\n");
    return 0;
      

  2.   

       int darongling = 6;
                int xiaorongling = 5;
                int da=6;
                int xiao=5;
                int xiangyangderongling=3;
                while (true)
                {
                    da = darongling ;
                    xiao=xiaorongling -( da - xiao);
                    if (xiao == xiangyangderongling)
                    {
                        MessageBox.Show("成功");
                        return;
                    }
                }
      

  3.   

    呵呵,你那三个1往哪儿放?6(0)->6
    6->5
    5->0
    6(1)->5
    6(0)->6
    6->5
    5->0
    6(2)->5
    6(0)->6
    6->5
    6(3)老掉牙的题目...
      

  4.   


    作为一个通用解题思路,一看就不可行。xiao会出现负数的水量,而且对于“两个杯子是7升、3升,要求称出5升水来”的问题“xiao == xiangyangderongling”永远不成立,程序永远停不下来,所以这是个不成立的解题程序。实际上,胡乱写的程序是没有考虑到状态的循环重复的,只要看看程序有没有这方面考虑就知道思路如何。只要考虑到这一点,具有回溯功能,就能够找到解答,或者由程序断言没有可能得到结果。
      

  5.   

            int A = 0;
            int B = 0;
            while (A<3)
            {
                B = A;
                A = 0;
                int x2=5-B;
                A = A + 6;
                A = A - x2;          
            }
      

  6.   

    我这个只是按lz条件,如果按sp1234我的就有问题了sp1234的应该是递归而不是循环
      

  7.   

    先装满5升的,再倒给6升的,此时6L的还差一升才满,再装满5L的,到给6L的一升,5L的里面还剩4L,把6L的水全部倒掉,把5L里面剩的4L到给6L,在装满5L的,添加满6L的,最后5L的里面就剩3L