using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HW4
{
class HW4
{
static void Main(string[] args)
{
int jugA;
int jugB;
int target;
bool isSolvable;
Console.WriteLine("----------------萬用分水遊戲----------------");
Console.WriteLine("請輸入容器A的容量:");
jugA = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入容器A的容量:");
jugB = int.Parse(Console.ReadLine());
Console.WriteLine("請輸入目標水量:");
target = int.Parse(Console.ReadLine());
if ((target % gcd(jugA, jugB) == 0 && target <= jugA + jugB) || (target == jugA + jugB)) //判斷是否有解
{
isSolvable = true;
//Console.WriteLine("可解!");
}
else
{
isSolvable = false;
Console.WriteLine("不可解!");
}
int capacityA = 0;
int capacityB = 0;
int step = 0;
if (isSolvable)
{
if (jugA == target)
{
Console.WriteLine("將A容器裝滿則分水成功!");
}
else if (jugB == target)
{
Console.WriteLine("將B容器裝滿則分水成功!");
}
else if (target == jugA + jugB)
{
Console.WriteLine("將A及B容器裝滿則分水成功!");
}
else
{
do
{
step++;
if (capacityA == 0)
{
capacityA = jugA;
Console.WriteLine("第{0,2}步驟:將A容器裝滿\n現今水量 A:{1,2} B:{2,2}", step, capacityA, capacityB);
}
else if (capacityB == jugB)
{
capacityB = capacityA;
capacityA = 0;
Console.WriteLine("第{0,2}步驟:將B容器倒光,且A容器之水全數倒入B容器\n現今水量 A:{1,2} B:{2,2}", step, capacityA, capacityB);
}
else if (capacityA + capacityB < jugB && capacityA == jugA)
{
capacityB += capacityA;
capacityA = 0;
Console.WriteLine("第{0,2}步驟:將A容器之水全數倒進B容器\n現今水量 A:{1,2} B:{2,2}", step, capacityA, capacityB);
}
else if (capacityA + capacityB >= jugB && capacityA == jugA)
{
capacityA -= (jugB - capacityB);
capacityB = jugB;
Console.WriteLine("第{0,2}步驟:以A容器之水將B容器倒滿\n現今水量 A:{1,2} B:{2,2}", step, capacityA, capacityB);
}
else
{
Console.WriteLine("ERROR!");
break;
}
}
while (!(capacityA == target || capacityB == target || (capacityA + capacityB) == target));
Console.WriteLine("完成目標,分水成功!");
}
}
else
{
Console.WriteLine("程式結束!");
}
Console.ReadKey();
}
public static int gcd(int a, int b) //輾轉相除法求GCD
{
if (a % b == 0)
{
return b;
}
else
{
return gcd(b, a % b);
}
}
}
}
2015年4月6日 星期一
[2015][Homework]Team01 - Hw04
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言