【ACM小白成长撸】--贪婪法解硬币找零问题

question:假设有一种货币,它有面值为1分、2分、5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱。按照贪婪法的思想,需要不断地使用面值最大的硬币。如果找零的值小于最大的硬币值,则尝试第二大的硬币,依次类推。

 1 /*程序的版权和版本声明部分:
 2 **从《C++程序设计思想与方法》(作者:翁惠玉)P61转载
 3 */
 4 #include <iostream>
 5
 6 using namespace std;
 7
 8 #define ONEFEN 1
 9 #define TWOFEN 2
10 #define FIVEFEN 5
11 #define ONEJIAO 10
12
13 int main(void)
14 {
15     int money;
16     int onefen = 0, twofen = 0, fivefen = 0, onejiao = 0;
17
18     cout << "输入要找零的钱(以分为单位):";
19     cin >> money;
20
21     //不断尝试每一种硬币
22     while(money >= ONEJIAO)
23     {
24         onejiao++;
25         money = money - ONEJIAO;
26     }
27     while(money >= FIVEFEN)
28     {
29         fivefen++;
30         money = money - FIVEFEN;
31     }
32     while(money >= TWOFEN)
33     {
34         twofen++;
35         money = money - TWOFEN;
36     }
37     while(money >= ONEFEN)
38     {
39         onefen++;
40         money = money - ONEFEN;
41     }
42
43     cout << "1角硬币数:" << onejiao << endl;
44     cout << "5分硬币数:" << fivefen << endl;
45     cout << "2分硬币数:" << twofen << endl;
46     cout << "1分硬币数:" << onefen << endl;
47
48     return 0;
49 }
时间: 2024-08-02 15:10:10

【ACM小白成长撸】--贪婪法解硬币找零问题的相关文章

贪心算法解硬币找零问题

假如有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱? 按照贪心算法的思想,需要不断地使用面值最大的硬币.如果要找零的值小于最大的硬币值,则尝试第二大的硬币,依次类推. 代码如下: #include <iostream> using namespace std; #define ONE 1 #define TWO 2 #define FIVE 5 #define TEN 10 int main() { int money; int one=0,two=0

【ACM小白成长撸】--计算单词个数

我判断单词个数的方法,根据空格‘ ’的个数 分情况 当没有单词的时候 判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空格字符,才能判断一个word 注意事项: 当输入组数时,最后回车输入缓冲区里面,gets会得到一个回车符号,所以为了消除缓冲区的回车,需要利用fflush函数 当遇到最后一个‘\0’时,要在已有的words数目上加一,比如,"i love you",这儿有2个空格,不加一的话,words数

硬币找零问题之动态规划

今天我们看一下动态规划的硬币找零问题,主要通过一系列编程题分析动态规划的规律,只要掌握这一规律,许多动态规划的相关问题都可以类比得到. 题目1:给定数组arr,arr中所有的值都是正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数. 举例: arr[5,2,3],aim=20.  4张5元可以组成20元,其他的找钱方案都要使用更多张的货币,所以返回4. 题解: 一眼看去这道题好像可以用贪心算法可解,但是仔细分析发现有

硬币找零问题的动态规划实现

一,问题描述 给定一组硬币数,找出一组最少的硬币数,来找换零钱N. 比如,可用来找零的硬币为: 1.3.4   待找的钱数为 6.用两个面值为3的硬币找零,最少硬币数为2.而不是 4,1,1 因此,总结下该问题的特征:①硬币可重复多次使用.②在某些情况下,该问题可用贪心算法求解.具体可参考:某种 找换硬币问题的贪心算法的正确性证明 二,动态规划分析 为了更好的分析,先对该问题进行具体的定义:将用来找零的硬币的面值存储在一个数组中.如下: coinsValues[i] 表示第 i 枚硬币的面值.比

nyoj995硬币找零(dp完全背包)

硬币找零 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05, 0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数. 但不幸的是: 我们可能没有这样一种好的硬币系统, 因此

NYOJ 995 硬币找零

硬币找零 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05, 0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数. 但不幸的是: 我们可能没有这样一种好的硬币系统, 因此

动态规划求解最多有几种方案求解硬币找零问题

一,问题描述 假设有 m 种面值不同的硬币,存储在 coinsValues数组中,现需要使用这些硬币来找钱,各种硬币的使用个数不限. 求对于给定的钱数N,我们最多有几种不同的找钱方式.硬币的顺序并不重要. 二,动态规划分析 为了更好的分析,先对该问题进行具体的定义:将用来找零的硬币的面值存储在一个数组中.如下: coinsValues[i] 表示第 i 枚硬币的面值.比如, 第 i 枚硬币     面值 1                1 2                3 3       

DP:硬币找零

在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资.我们应该注意到,人民币的硬币系统是100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数. 但不幸的是:我们可能没有这样一种好的硬币系统,因此用贪心算法不能求出最少的硬币数,甚至有些金钱总数还不能用这些硬币找零.例如,如果硬币系统是40,30

硬币找零-记忆化搜索(DP动态规划)

硬币找零 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05, 0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数. 但不幸的是: 我们可能没有这样一种好的硬币系统, 因此