// 實驗小結 吳新強於2013年3月20日0:19:08 桂電 2507實驗室
// 貪心算法解決找零錢問題 這裏用的是人民幣()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Greedy_Algorithm
{
class Program
{
static void Main()
{
int origAmount =4568;//單位角 給了100百,需要找63塊的算法(假設不存在幾分的)
int toChange = origAmount ;
int remainAmount = 0;
int[] coins = new int[9];
// Console.WriteLine("提示:請輸入小於100元的值,找零大於100是沒意義的!");
MakeChange(origAmount, remainAmount, coins);
Console.WriteLine();
Console.WriteLine("最優找零方法如下:" + toChange + "角");
Console.WriteLine();
//origAmount = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("找零的人民幣是: ");
Console.WriteLine();
ShowChange(coins);
}
static void MakeChange(double origAmount, double remainAmount, int[] coins)
{
if ((origAmount % 500) < origAmount)
{
coins[8] = (int)(origAmount / 500);
remainAmount = origAmount % 500;
origAmount = remainAmount;
}
if ((origAmount % 200) < origAmount)
{
coins[7] = (int)(origAmount / 200);
remainAmount = origAmount % 200;
origAmount = remainAmount;
}
if ((origAmount % 100) < origAmount)
{
coins[6] = (int)(origAmount / 100);
remainAmount = origAmount % 100;
origAmount = remainAmount;
}
if ((origAmount % 50) < origAmount)
{
coins[5] = (int)(origAmount / 50);
remainAmount = origAmount % 50;
origAmount = remainAmount;
}
if ((origAmount % 20) < origAmount)
{
coins[4] = (int)(origAmount / 20);
remainAmount = origAmount % 20;
origAmount = remainAmount;
}
if ((origAmount % 10) < origAmount)
{
coins[3] = (int)(origAmount / 10);
remainAmount = origAmount % 10;
origAmount = remainAmount;
}
if ((origAmount % 5) < origAmount)
{
coins[2] = (int)(origAmount / 5);
remainAmount = origAmount % 5;
origAmount = remainAmount;
}
if ((origAmount % 2) < origAmount)
{
coins[1] = (int)(origAmount / 2);
remainAmount = origAmount % 2;
origAmount = remainAmount;
}
if ((origAmount % 1) < origAmount)
{
coins[0] = (int)(origAmount / 1);
remainAmount = origAmount % 1;
// origAmount = remainAmount;
}
}
static void ShowChange(int[] arr)
{
if (arr[8] > 0)
Console.WriteLine("50元的人民幣: " + arr[8] + "張 ");
if (arr[7] > 0)
Console.WriteLine("20元的人民幣: " + arr[7] + "張");
if (arr[6] > 0)
Console.WriteLine("10元的人民幣: " + arr[6] + "張");
if (arr[5] > 0)
Console.WriteLine("5元的人民幣: " + arr[5] + "張");
if (arr[4] > 0)
Console.WriteLine("2元的人民幣: " + arr[4] + "張");
if (arr[3] > 0)
Console.WriteLine("1元的人民幣: " + arr[3] + "張");
if (arr[2] > 0)
Console.WriteLine("5角的人民幣: " + arr[2] + "張");
if (arr[1] > 0)
Console.WriteLine("2角的人民幣: " + arr[1] + "張");
if (arr[0] > 0)
Console.WriteLine("1角的人民幣: " + arr[0] + "張");
}
}
}
}
實驗截圖: