【笔记】贪心算法-找零钱(C#实现)

找零钱这个问题很清楚,无非就是始终拿可以取的最大面值来找,最后就使得张数最小了,这个实现是在假设各种面值足够多的情况下。

首先拖出一个界面来,最下面是一个listbox控件

对应的代码:问题比较简单,有注释

复制代码
View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9
10 namespace test
11 {
12 public partial class Form1 : Form
13 {
14 public Form1()
15 {
16 InitializeComponent();
17 }
18
19 private void buttonOk_Click(object sender, EventArgs e)
20 {
21 if (listMoney.Items.Count != 0) //第二次计算就清空,便于重复计算
22 listMoney.Items.Clear();
23
24 var money = Exchange(Convert.ToDecimal(txtMoney.Text));
25
26
27 foreach (var single in money)
28 {
29 if (single.Value != 0)
30 {
31 string s = string.Format("{0}元---->{1}张 ", single.Key, single.Value);
32 listMoney.Items.Add(s);
33 }
34 }
35
36 }
37 Dictionary<decimal, int> GetInit() //初始化字典
38 {
39 Dictionary<decimal, int> money = new Dictionary<decimal, int>();
40
41 //key表示钱,value表示钱的张数
42 money.Add(100.00M, 0);
43 money.Add(50.00M, 0);
44 money.Add(20.00M, 0);
45 money.Add(10.00M, 0);
46 money.Add(5.00M, 0);
47 money.Add(2.00M, 0);
48 money.Add(1.00M, 0);
49 money.Add(0.50M, 0);
50 money.Add(0.20M, 0);
51 money.Add(0.10M, 0);
52
53 return money;
54 }
55
56 Dictionary<decimal, int> Exchange(decimal num)
57 {
58 var money = GetInit();
59
60 int i = 0;
61
62 while (true)
63 {
64 if (num < 0.1M)
65 {
66 if (num > 0.05M)
67 {
68 money[0.10M]++; //大于0.05的时候给顾客0.1.
69 return money;
70 }
71 else
72 return money; //否则就算了
73 }
74
75 var max = money.Keys.ElementAt(i); //取得面值
76
77 if (num >= max)
78 {
79 num = num - max;
80 money[max] ++; //money的张数自增
81 }
82 else
83 i++; //就去取下一张面值
84 }
85 }
86 }
87 }
复制代码



posted @   lazycoding  阅读(1342)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示