钱币兑换问题(dp+数学)

程序员面试金典(动态规划):1分,5分,10分,25分硬币面值组合问题(解题思路) 问题描述: 假设我们有8种不同面值的硬币{1,2,5,10,20,50,100,200},用这些硬币组合够成一个给定的数值n。例如n=200,那么一种可能的组合方式为 200 = 3 * 1 + 1*2 + 1*5 + 2*20 + 1 * 50 + 1 * 100. 问总过有多少种可能的组合方式? [华为面试题] 1分2分5分的硬币三种,组合成1角,共有多少种组合? [创新 阅读详情

题意:在一个国家仅有1分,2分,5分硬币,将n(n>=5)分钱兑换成硬币有很多种兑法。求有多少种兑换方式。

第一种解法:

通过枚举3的种类数,当你已知3的个数就可以求出2的种类,以此类推,3的个数确定,2的个数也可以确定,剩下的就是1,假设3的个数为x(0<=x<=n/3),那么2的个数就是(n-3*i)/2,再然后1的个数就确定了。

#include<bits/stdc++.h>
using namespace std;
int  main()
{
	int n;
	while(cin>>n){
		int i,j,ans=0;
		for(i=0;i<=n/3;i++){
			int temp=(n-3*i);     
			ans+=temp/2+1;        
		}
		cout<<ans<<endl;
	}
}

第二种解法:

类似完全背包dp, 比较经典的dp问题,外层循环是硬币的价值,可以一个一个枚举,如果i=1,那么则一直放1,求出方案数,其他同理。

#include<bits/stdc++.h>
using namespace std;
const int maxn=32768+10000;
int dp[maxn];
int main()
{
	int n,i,j;
	while(~scanf("%d",&n)){
		memset(dp,0,sizeof(dp));
		dp[0]=1;
		for(i=1;i<=3;i++){
			for(j=i;j<=n;j++){
				dp[j]+=dp[j-i];
			}
		}
		cout<<dp[n]<<endl;
	}
}
2023华为OD面试手撕真题【钱币兑换问题】 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 阅读详情

相关推荐

编写程序,输出用一元人民币兑换成1分、2分和5分硬币共有多少种兑换方法。

编写程序,输出用一元人民币兑换成1分、2分和5分硬币共有多少种兑换方法。

在一个国家仅有1分,2分,5分硬币,将n(n>=5)分钱兑换成硬币有很多种兑法。请你编程序计算出10分钱共有多少种兑法,并列出每种兑换方式。

这道题用简单的几个for循环嵌套加上一个条件判断语句就可以实现 #include<iostream> using namespace std; int main() { int i,j,k,sum=0; for(i=0;i<100;i++) for(j=0;j<50;j++) for(k=0;k<20;k++) { if(i+2*j+k*...

weixin_44187335的博客 6076

狱吏问题,求解钱币兑换问题,沙漠问题蛮力算法.pdf

1狱吏问题 题目描述: 某国王对囚犯进行大赦,让一狱吏n次通过一-排锁着的n间. 牢房,每通过一-次按所定规则转动n间牢房中的某些门锁,每转 动一次原来锁着的被打开,原来打开的被锁上通过n次后,门锁 开着的,牢房中的犯人被放出,否则,犯人不得释放。 转动门锁的规则是这样的,第一次通过牢房,从第一间开始转 动每一把锁,即把全部锁打开;第二次通过牢房时,从第二间开始, 每隔一间转动一次; ...第k次通过牢房,第k间开始转动,每. 隔k-1间转动一次;问经过n次后,哪些牢房的锁依然是开着的。 2.求解钱币兑换问题 题目描述: 某个国家仅有1分、2分、5分硬币,将钱n(n>=5)兑换成硬币有很 多种兑法,编写实验程序计算出10分钱有多少种兑法,并列出每种 兑换方式。 3.沙漠问题 题目描述: -辆吉普车来到1000km宽的沙漠边沿。吉普车的耗油量为1L /km,总装油量为500L。显然,吉普车必须用自身油箱中的油在沙 漠中设几个临时加油点,否则是通不过沙漠的。假设在沙漠边沿有 充足的汽油可供使用,那么吉普车应在哪些地方、建多大的临的加油 点,才能以最少的油耗穿过这块沙漠?

【算法】求解钱币兑换问题

求解钱币兑换问题 某个国家仅有1分.2分和5分硬币,将钱n(n≥5)兑换成硬币有很多种兑法。编写一 个实验程序计算出10分钱有多少种兑法,并列出每种兑换方式。 #include<iostream> using namespace std; int main() { cout << "输入n:"; int n; cin >> n; int i, j, k,...

DingDong的博客 7198

蛮力法求解百钱买百鸡的问题

大学生实验报告;;蛮力法求解百钱买百鸡问题;;包含 问题、完整代码、思路、总结、帮助各位大学生更好的完成日常实验报告;;

华为BEM战略解码体系完整版(85页PPT)(文末有下载方式)

在部门层面,战略解码的核心是将公司战略逐层分解到部门,确保部门目标能够有效支撑公司战略。战略解码的关键原则包括:对公司战略和业务目标的支撑、指标选取考虑部门责任特色、对公司业务流程的支撑、战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码体系的核心目标是将公司战略逐层分解,确保战略目标能够通过可衡量的。在公司层面,战略解码的第一步是战略澄清,明确公司的使命、愿景、战略目标及。

AI_data_cloud的博客 2400

【完全背包】leetcode 322.零钱兑换

题目: 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 解答: 方法一: class Solution: def coinChange(self, coins: List[int], amount: int) -> int: #为了方便初始化,dp[0][x]表示不考虑任何物品的情况 #dp[i][j]:考虑

jqq125的博客 132

别再花屏了!手把手教你用STM32CubeIDE搞定LVGL 8.3移植(附完整源码)

本文详细介绍了如何在STM32CubeIDE环境下成功移植LVGL 8.3,解决常见的花屏问题。从环境配置、显示驱动优化到编译警告处理,提供完整的实战方案和源码示例,帮助开发者快速实现流畅的嵌入式GUI界面。特别针对STM32平台的DMA2D加速和内存管理进行了深度优化。

weixin_33739646的博客 242

HDU 1284 钱币兑换问题 (数学)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1284 代码: #include using namespace std; int main() { int n,sum,i; while (cin>>n) { for (i=0,sum=0;i<=n/3;i++) sum+=(n-3*i)/2+1; cout<<sum<<endl

Pig_Me的博客 204

[ESP32]:基于esp-modbus实现serial主机

[ESP32]:基于esp-modbus实现serial主机

LINKKEEE的博客 2567

第9章:Embedding、Pooling 与检索增强基础

本文介绍了律师事务所如何利用vLLM构建法律文档RAG系统,解决传统关键词检索在语义匹配上的不足。主要内容包括: 项目背景:传统Elasticsearch检索在法律术语上的低准确率问题,及多模型维护的复杂性; 技术方案:采用vLLM统一支持生成和向量化能力,通过语义向量检索提升相关性; 关键实现: 用vLLM的Embedding端点处理文档向量化 构建包含离线索引和在线检索的完整RAG流程 采用余弦相似度进行语义匹配 实践建议:切片大小选择、向量归一化处理、不同场景下的数据库选型等。

davidwang456的专栏 59

HDU 1284(钱币兑换问题)完全背包求方案总数

直接背包九讲的公式套用 把Max改成Sum 代码: #include #include int dp[32999]; int main() { int n,i,j; int a[10]; while(scanf("%d",&n)!=EOF) { a[0]=1,a[1]=2,a[2]=3; memset(dp

小铅笔 530

软件可靠性测试与评价

本文系统介绍了软件可靠性工程的核心内容,包括可靠性概念、模型分类、测试方法和评价体系。重点解析了可靠性测试的三大步骤:定义运行剖面、设计测试用例和实施测试收集数据,并以智能安防系统为例说明具体应用。可靠性评价需结合业务场景,通过量化指标(MTBF、失效率等)和模型预测持续优化系统。文章强调可靠性需贯穿软件全生命周期,通过闭环反馈实现持续改进,为关键系统提供质量保障。

moton2017的博客 2050

钱币兑换问题

D - 钱币兑换问题 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 Input每行只有一个正整数N,N小于32768。Output对应每个输入,输出兑换方法数。Sample Input 2934 12553 Sample Output 718831 13137761解法1:母函数代码如下: #include<iostr...

weixin_34232617的博客 874

顶级AI大模型白嫖ChatGPT Plus1个月,0成本薅顶配功能

Chat*** Plus限时免费1个月!原价20美元/月的顶配功能

BUG猿的博客 7276

AI工具 | 每个打工人必备的15款人工智能超级工具

不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。

Vampire_2017的博客 5万+

钱币兑换问题 背包

钱币兑换问题 原题链接https://vjudge.net/contest/348156#problem/K 计算每种钱币兑换的方法 对于拿1的情况先遍历 在遍历2 和3 比如5时 遍历1 时为1种; 遍历2时为 1+dp[5-2];也就2一种加上组成三的总数,1为遍历1时已经得到的种数也就是dp[5]+dp[5-2]; 遍历3时 dp[5]+dp[5-3] 最后得到公式也就是dp[i]+=d...

yeyuluo的博客 203

ABB变频器使用PROFINET IO通信模块时的激活方法

ABB变频器使用PROFINET IO通信模块时的激活方法

Robot_PLC_HMI_Automation 2734

HDU 1284 钱币兑换问题

钱币兑换问题 http://acm.hdu.edu.cn/showproblem.php?pid=1284 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K(Java/Others) Total Submission(s): 3261 Accepted Submission(s):1842 Pr

Inkbamboo专栏 1138

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

钱币兑换问题 hdu 1284

题源:钱币兑换问题 hdu 1284 题目: 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 Input 每行只有一个正整数N,N小于32768。 Output 对应每个输入,输出兑换方法数。 Sample Input 2934 12553 Sample Output 718831 13137761 思路: 先把这个数除以3,看能分成多少个3,...

wait 561

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

hdu 1284 钱币兑换问题 完全背包之方案总数~

在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 Input 每行只有一个正整数N,N小于32768。 Output 对应每个输入,输出兑换方法数。

Lionel 1179

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

钱币兑换问题 HDU - 1284

Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 Input 每行只有一个正整数N,N小于32768。 Output 对应每个输入,输出兑换方法数。 Sample Input 2934 12553 Sampl

白黑菜的博客 585

HDU-1284 钱币兑换问题(dp入门)

钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12528Accepted Submission(s): 7588 Problem Description 在一个国家仅有1...

本该如此 1130

hdu 1284 钱币兑换问题( 完全背包)

钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9836    Accepted Submission(s): 5966 Problem Description 在一个国家仅有1分,2分,3分硬币,将

xunalove的博客 1459
上一篇: 受过训练的小蜜蜂嗡嗡嗡(简单dp,斐波那契)
下一篇: 最长公共子序列(动态规划)
莫霸学编程
博客等级 码龄7年 37粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值