计算最少钱币数C++程序代码。

1003: 最少钱币数 1003: 最少钱币数 题目描述 作为A公司的职员,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了。但是对于公司财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡最近就在考虑一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位职员发工资的时候都不用老师找零呢?这里假设员工的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。 输入 输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<=100),表示老 阅读详情
最少钱币数:
【问题描述】
这是一个古老而又经典的问题。         用给定的几种钱币凑成某个钱数,一般而言有多种方式。           例
如:给定了 6 种钱币面值为 2、 10、 50、
                      5、 20、 100,用来凑 15 元,可以用 5 个 2 元、 个 5 元,
                                                      1
或者 3 个 5 元,或者 1 个 5 元、1 个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑
成某个给出的钱数。
【要求】
                              每个测试用例的第一行是待凑的钱数值 M(1 <= M
【数据输入】        输入可以有多个测试用例。
<= 2000,整数),接着的一行中,第一个整数 K(1 <= K <= 10)表示币种个数,随后是
K 个互不相同的钱币面值 Ki(1 <= Ki <= 1000)。输入 M=0 时结束。
              每个测试用例输出一行,即凑成钱数值 M 最少需要的钱币个数。
【数据输出】                                            如果凑钱失败,
输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。
【样例输入】
15
6 2 5 10 20 50 100
1
12
0
【样例输出】
2
Impossible

-------------------------------------总结的分割线--------------------------

总结:

    1,  在写程序的时候发现, 虽然我学过一点STL,但在用起来的时候非常的不熟练,需要边查资料边写,以前大多用c语言写程序,现在有必要多写一点c++程序,多用STL,提高编程能力。

    2,这个程序的查找还可以优化一下,可以用二分法查找,找到小于或者剩余的钱数。

    3,题目要求的输入限制没有检测。

----------------------------------------------------------------------


程序代码:

#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;

bool greater(const int &i, const int &j);
class money {
	public:
		money(vector<int> &m);
		~money();
		void show(int value);
	private:
		vector<int> m_money;
};

money::money(vector<int> &m): m_money(m)
{
	sort(m_money.begin(), m_money.end(), greater);
}	

money::~money()
{
}
bool greater(const int &i, const int &j)
{
	return i > j;
}

void money::show(int value) 
{
	size_t count = 0;

	while (value > 0) {
		vector<int>::iterator i = m_money.begin();
		while (i != m_money.end()) {
			if (*i > value) {
				i++;
			}
			else {
				break;
			}
		}
		if (i == m_money.end()) {
			printf("Impossible\n");
			return;
		}
		count += value / *i; 
		value = value % *i;
	}
	printf("%d\n", count);
}




int main(int argc, char *argv[])
{
	vector<int> input;
	int value;
	int num;
	int n;
	scanf("%d", &value);
	scanf("%d", &num);
	while(true) {
		scanf("%d", &n);
		if (n == 0) {
			break;
		}
		if (num > 0) {
			input.push_back(n);
			num--;
		}
	} 

	money m(input);
	m.show(value);

	return 0;	
}


贪心算法 C++实现经典案例 - 最小硬币找零问题 在本篇文章中,我们将介绍一个经典的贪心算法案例:最小硬币找零问题,并使用C++实现。接下来,我们从最大面额的硬币开始,尽可能多地使用该面额的硬币,直到无法再添加更多。在每一次循环中,我们使用尽可能多的当前面额的硬币,直到无法再添加更多。最小硬币找零问题是一个经典的优化问题,其目标是找到一种最高效的方式,使用最少数量的硬币来找零。假设我们有一定面额的硬币,例如1元、5元、10元和25元,我们需要找零n元。然而,需要注意的是,贪心算法并不适用于所有问题,因为它只考虑当前步骤的最优解,而不考虑全局最优解。 阅读详情

相关推荐

移远EC21/EC200模组休眠功耗从13mA降到6mA,我排查了这3个坑(附完整AT指令流程)

本文详细介绍了移远EC21/EC200模组休眠功耗从13mA优化至6mA的完整解决方案,涵盖硬件设计检查、AT指令配置、RTOS调度优化和固件兼容性验证等关键步骤。通过系统性的低功耗问题诊断框架,帮助IoT设备开发者有效提升电池续航能力,特别适合智能水表等电池供电场景应用。

weixin_30715523的博客 534

发工资c++

但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。作为打工人,最盼望的日子就是每月的9号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵。

2201_75571026的博客 362

RP Fiber Power 版本

RP Fiber Power的版本历史 该软件一直受到多年来广泛的发展计划,这大大扩展了其功能,以及用户界面的质量。 V1 这是第1个版本。 它仅限于光纤激光器和放大器的连续波计算,并且只能通过脚本进行控制。 V2 版本2引入了交互式表单。 至少对于更简单的模拟,现在可以简单地通过填写表单来工作,而V1必须通过脚本来控制。 例如,屏幕截图显示了输入某些信号参数的表单: 当您基于这些表单执行计算时,程序将根据您的表单输入自动编写脚本文件,然后执行该脚本。如果您需要编写脚本以获得更大的灵活性,可以稍后查看该脚

Asdmath的博客 2431

c++代码--取硬币数最小

#include &lt;iostream&gt; #include &lt;string&gt; #include&lt;limits&gt; using namespace std;     typedef  struct {     int ncoin;  //使用的硬币数量      int addcoin;  //从上一个状态到当前状态所用      int lasttotal;  ...

shihuangdeng898的博客 993

人工智能训练师认证教程(5)使用MONAI进行医学影像分析的完整指南

本文介绍了使用MONAI框架进行医学影像分析的全流程。首先详细说明了环境搭建步骤,包括PyTorch和MONAI的安装配置。然后以肺部CT 3D分割为例,分步骤讲解了数据准备与预处理、3D UNet模型构建、训练配置(DiceLoss损失函数、Adam优化器等)以及训练验证循环的实现。文章还包含推理可视化方法和模型导出为ONNX格式的部署方案,并强调了医学影像分析中的数据格式适配、强度归一化、显存优化等关键注意事项。最后指出MONAI的医学专用组件可大幅简化开发流程,建议后续可探索SwinUNETR等进阶方

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 1207

【CTF-misc】java盲水印BlindWatermark工具使用

​ 盲水印是一种肉眼不可见的水印方式,对图片资源使用图片盲水印或者文字水印,借此避免数字媒体未经授权的复制和拷贝,可通过对原图进行解码操作,得到水印图来证明版权归属。 题目来源:NewStarCTF 2023 公开赛道 WEEK2|MISC:Jvav

qq_39972370的博客 6444

最少钱币数

题目描述         这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 元,或者 1 个 5 元、1个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。         你的任务就是,给定若干个互不相同的钱

Donald—Hu的博客 1158

上机任务一:空气质量指数 (air quality index,AQI是定量描述空气质量状况的指数。为了更好地了解和人们身体健康息息相关的天气状况,本书模拟生成500条某地区天气数据,一行样本对应一天

调整后的R平方为0.4308,考虑了模型中的自由度,它略低于多重R平方,说明模型的解释能力可能有限。总的来说,新的模型相对于之前的模型在AIC值上更优,包含了最高温度(X2)和最低温度(X3)这两个重要的预测因子,并且对AQI的解释能力较好。在表中,Df表示自由度,Sum Sq表示总平方和,Mean Sq表示均方(总平方和除以自由度),F value表示F统计量,Pr(>F)表示对应的p值。在分析这些结果时,需要关注系数的显著性(p值),系数的方向(正向或负向影响),以及系数的大小(估计值)。

Mrrunsen的博客 722

【C++编程题】最少钱币数(动态规划,递归)

【问题描述】这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 元,或者 1 个 5 元、1个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【输入形式】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值...

weixin_50281879的博客 2423

【DRAM存储器六十七】DDR5介绍--训练相关之write leveling

详述DDR5 write leveling细节

highman110的博客 283

芯片ATE测试PAT(Part Average Testing)学习总结-20250916

文章摘要:零件平均测试(PAT)是半导体制造中基于统计学的质量控制方法,分为静态和动态两种类型。静态PAT通过预先设定的固定限值(每6-8批次更新)筛选异常芯片,计算采用稳健平均值和四分位间距。动态PAT则根据实时数据调整限值,能更精确识别异常而不误判合格芯片。两种方法均采用"均值±6倍标准差"的计算公式,但动态PAT具有更好的适应性和准确性。该方法通过统计分析提高了芯片产品的质量和可靠性。

歌颂苦难的行为是无耻的; 1190

最少钱币数(凑硬币)详解-2-动态规划算法(初窥)-编程练习题(100)

目录 题目: 分析: C++动态规划算法代码: 总结: 这篇使用动态规划算法来解决这个问题,借这篇博客初窥动态规划算法。最少钱币数问题也可以看作多重背包问题。 那么什么是动态规划算法? 动态规划(dynamic programming,DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50...

didiaola4003的博客 1932

【OpenClaw从入门到精通】第45篇:Skill供应链安全——如何识别并避开恶意技能插件?(2026实测版)

随着OpenClaw生态爆发式增长,全球Skills总量近75万个,日均新增2.1万个,但恶意/问题插件已超600个,数十万用户受影响。本文基于奇安信威胁报告及360安全实践,拆解恶意技能的五大核心特征,提出"安装前三步法"安全审查流程,详解安全技能来源白名单与定期审计方案,并深度解析360龙虾Skill安全超市的分级认证机制。读者可掌握从技能筛选、安装审查到术后审计的全流程安全防护手段,通过实操命令与案例演示,零成本构建Skill供应链安全防线,避免遭遇私钥窃取、资产损失等安全事件。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 561

java最少钱币数_最少钱币数(凑硬币)详解-2-动态规划算法(初窥)-CCF-CSP练习题(100)...

目录这篇使用动态规划算法来解决这个问题,借这篇博客初窥动态规划算法。最少钱币数问题也可以看作多重背包问题。那么什么是动态规划算法?动态规划(dynamic programming,DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision proces...

weixin_30578645的博客 1092

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

8.最小钱币数(动态规划)

8.最少钱币数 【问题描述】这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 元,或者 1 个 5 元、1个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【输入形式】输入可以有多个测试用例。每个测试用例的第...

longzaizai_的博客 1510

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

最少钱币数(动态规划)

用此问题举例来说,假设给出的货币面额是随便啥,现在要凑c元,那么可以把这个问题分解为凑a元和b元,而且可以确定,当凑c元所用货币数为最少的n张时,凑a元和凑b元所用的货币数也是最少的。首先对动态规划的算法思想有个大概的了解:与分治法类似,将待解决问题分解成若干子问题,先求解子问题,再结合子问题的解得到问题的解。遇到这个问题,一般来说第一想法都会是直接用贪心的思想,先选取当前能选取的最大额钱币数,比如说我有1,2,5三种面额的货币,现在要凑7块钱,那就先选一张5,再选一张2,就可以得到最少钱币数2。

iu_iu_lll的博客 1010

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

HNU软件能力实训4-8. 最少钱币数

写在前面 你好!欢迎来到我的博客,希望我的思路能够帮到你! 问题描述 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 元,或者 1 个 5 元、1个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 输入形式 输入可以有多个测试用

Karltan的博客 736

java最少需要多少张纸币_最少钱币数(凑硬币)详解-2-动态规划算法(初窥)-编程练习题(100)...

目录这篇使用动态规划算法来解决这个问题,借这篇博客初窥动态规划算法。最少钱币数问题也可以看作多重背包问题。那么什么是动态规划算法?动态规划(dynamic programming,DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision proces...

weixin_39656686的博客 1267

实训四#4.8最少钱币数

【问题描述】这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 元,或者 1 个 5 元、1个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【输入形式】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值...

qq_54256430的博客 379

PIPI1003: 最少钱币数c++

作为A公司的职员,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了。但是对于公司财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡最近就在考虑一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位职员发工资的时候都不用老师找零呢?这里假设员工的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。

执念斩长河 539

算法设计与分析 SCAU8595 钱币组合的问题(优先做)

转移方程的过程:dp[i][sum] += dp[i - 1][sum - num * v[i]]:加上前 i 种纸币面值为 sum - num * v[i] 时的个数,由于 num 是会慢慢变大,即组合能容纳多张第 i 张纸币,因为可能会重复,所以是加上.也用一个状态转移方程来记录 paper[i][sum]: 记录到第 i 种纸币时,面值为 sum 的纸币最小张数

weixin_53893220的博客 674

最少钱币数-1-贪心算法(错在哪里)-编程练习题(50)

目录 题目: 分析: 贪心算法C++代码(有问题): 总结: 自己保存的编程练习题,可以看这里CG-OJ系统编程练习题。 题目: 最少钱币数 问题描述 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 ...

www.helloworld.com 4156

动态规划C++实现--换钱的最少货币数

题目:换钱的方法数      给定数组 arr, arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。举例:arr=[5, 2, 3] , aim = 20.       4张5元可以组成20元。返回 4arr=[5, 2, 3] , aim = 0         不使用货币,返回 0arr=[3...

樱木花道喜爱学习 2222
上一篇: 未来发展方向
下一篇: libuv 定时器使用
smallmelon
博客等级 码龄16年 22粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值