62,046
社区成员
发帖
与我相关
我的任务
分享
//Bucket类没改
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Achieve(20, 11, 9, 10, 10);
}
public static void Change(Bucket bucketOut, Bucket bucketIn)
{
if (bucketOut.Water >= (bucketIn.Capacity - bucketIn.Water))
{
bucketOut.Water = bucketOut.Water - (bucketIn.Capacity - bucketIn.Water);
bucketIn.Water = bucketIn.Capacity;
bucketIn.CheckState();
bucketOut.CheckState();
}
else
{
bucketIn.Water = bucketIn.Water + bucketOut.Water;
bucketOut.Water = 0;
bucketIn.CheckState();
bucketOut.CheckState();
}
}
public static void Achieve(int big,int middle,int small,int result1,int result2 )
{
Bucket bBig = new Bucket(big);
bBig.Water = big;
bBig.CheckState();
Bucket bMiddle = new Bucket(middle);
Bucket bSmall = new Bucket(small);
while (!((bBig.Water == result1) && (bMiddle.Water == result2)))
{
if (bSmall.State != States.Full)
{
Change(bMiddle, bSmall);
Console.Write(bBig.Water);
Console.Write(bMiddle.Water);
Console.WriteLine(bSmall.Water);
if (bMiddle.State == States.Empty)
{
Change(bBig, bMiddle);
Console.Write(bBig.Water);
Console.Write(bMiddle.Water);
Console.WriteLine(bSmall.Water);
}
}
else
if (bSmall.State == States.Full)
{
Change(bSmall, bBig);
Console.Write(bBig.Water);
Console.Write(bMiddle.Water);
Console.WriteLine(bSmall.Water);
}
if ((bMiddle.State==States.Full)&&(bSmall.State==States.Full))
{
Console.WriteLine("没有答案!");
break;
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication4
{
enum States { Empty, Half, Full }
//水桶类
public class Bucket
{
private States _state;
internal States State
{
get { return _state; }
set { _state = value; }
}
private int _capacity;
public int Capacity
{
get { return _capacity; }
set { _capacity = value; }
}
private int _water;
public int Water
{
get { return _water; }
set { _water = value; }
}
public Bucket(int capacity)
{
this.Capacity = capacity;
this.State = States.Empty;
this.Water = 0;
}
public void CheckState()
{
if (this.Water == this.Capacity)
{
this.State = States.Full;
}
else
if (this.Water == 0)
{
this.State = States.Empty;
}
else
{
this.State = States.Half;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Bucket b10 = new Bucket(10);
b10.Water = 10;
b10.CheckState();
Bucket b7 = new Bucket(7);
Bucket b3 = new Bucket(3);
while (!((b10.Water == 5) && (b7.Water == 5)))
{
if (b3.State != States.Full)
{
Change(b7, b3);
Console.Write(b10.Water);
Console.Write(b7.Water);
Console.WriteLine(b3.Water);
if (b7.State == States.Empty)
{
Change(b10, b7);
Console.Write(b10.Water);
Console.Write(b7.Water);
Console.WriteLine(b3.Water);
}
else
if (b3.State == States.Full)
{
Change(b3, b10);
Console.Write(b10.Water);
Console.Write(b7.Water);
Console.WriteLine(b3.Water);
}
}
}
}
public static void Change(Bucket bucketOut, Bucket bucketIn)
{
if (bucketOut.Water >= (bucketIn.Capacity - bucketIn.Water))
{
bucketOut.Water = bucketOut.Water - (bucketIn.Capacity - bucketIn.Water);
bucketIn.Water = bucketIn.Capacity;
bucketIn.CheckState();
bucketOut.CheckState();
}
else
{
bucketIn.Water = bucketIn.Water + bucketOut.Water;
bucketOut.Water = 0;
bucketIn.CheckState();
bucketOut.CheckState();
}
}
}
}