硬币问题(经典dp)

HDU2069 - Coin Change - 基础dp(经典硬币问题) Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Problem Description Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to ... 阅读详情


Coin Change


You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)

Example 2:

coins = [2], amount = 3
return -1.

Note:
You may assume that you have an infinite number of each kind of coin.



状态:d(i)定义为组合i 所用的最少的硬币数。

状态转移方程:d(i)=min{d(j)+1} i>=j+v

(注意:memset只能初始化-1和0)

AC源码:

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        int d[10000];
        for(int i=1;i<=amount;++i)
                d[i]=(1<<20);
        d[0]=0;
        for(int i=1;i<=amount;++i)
        {
            for(int j=0;j<coins.size();++j)
            {
                if(i>=coins[j])
                    d[i]=min(d[i],d[i-coins[j]]+1);
            }
        }
        if(d[amount]>=(1<<20))
            return -1;
        else
            return d[amount];
        
    }
};



题解:洛谷 B3635 硬币问题 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。今有面值为 1、5、11 元的硬币各无限枚。仅一行,一个正整数,表示需要的硬币个数。#普及-# #线性DP-一维#元,问需要的最少硬币数量。本文分享的必刷题目是从。 阅读详情

相关推荐

算法分析实验 找零钱问题 伪造硬币问题

1. 【伪造硬币问题】给你一个装有n个硬币的袋子。n个硬币中有一个是伪造的。你的任务是找出这个伪造的硬币。为了帮助你完成这一任务,将提供一台可用来比较两组硬币重量的仪器,利用这台仪器,可以知道两组硬币的重量是否相同。试用分治法的思想写出解决问题的算法,并计算其时间复杂度。 2.【找零钱问题】一个小孩买了价值为33美分的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目有限的面值为25美分、10美分、5美分、及1美分的硬币。给出一种找零钱的贪心算法。

分治算法问题 A: 找出伪币

给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币.测试数据有多行,第一行是金币的数量n(n为正整数,并且n

weixin_68293830的博客 1414

算法分析之假币问题源代码

内含假币算法求解(三分算法和二分算法)源代码

Python(分治算法)问题 A: 找出伪币_给你一个装有n枚硬币的袋子。n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。

问题 A: 找出伪币 题目描述 给你一个装有n枚硬币的袋子。 n枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。 你的任务是找出这枚伪造的硬币。 输入 测试数据有多行,第一行是金币的数量n(n为正整数,并且n<=5000000); 接下来一行是n枚硬币的重量,用空格隔开。 输出 输出假币的位置及重量,用空格隔开。 样例输入 4 43 43 43 1 样例输出 4 1 解答(贪心算法): while True: try: s = list(map(int

XQC_KKK的博客 4369

VoLTE吞字断续优化方案

网络侧通过各节点探针的数据采集,能够进行RTP和RTCP包的分析,确定各节点的上行或下行丢包情况。1.基于测试语音分析,每2秒中大约8个字,每个字约10个RTP语音包。通话过程中,语音有短暂停顿,收音段听语音中会出现“吞字/断续现象”2.连续丢3~5个RTP以上就可能会出现吞字断续的感觉。下行评价的丢包问题,很难有效指导定界定位分析,无从下手。2.部分终端可能存在RTCP不反馈,导致无法获取丢包。1.语音包为UDP包,无反馈,终端无法判定是否丢包。终端可依据自身的调度反馈或弃包进行上行丢包判决。

m0_73503557的博客 1510

[渗透测试实战篇-4] RCE漏洞组合拳突破Getshell全解析

本文深入解析RCE漏洞组合拳在渗透测试中的实战应用,通过SSRF、XXE等漏洞串联技术突破Getshell的全过程。文章详细介绍了Java和PHP环境下的漏洞利用差异,以及防御绕过与权限维持的实用技巧,为安全研究人员提供全面的实战指导。

weixin_29211309的博客 350

问题 A: 找出伪币

在这个特定的问题中,目标是找出一组硬币中唯一一个比其他重量轻的伪造硬币。通过递归地将硬币分为两组,然后比较这两组中的硬币的重量,从而确定伪造硬币在哪一组。通过这种方式,每次递归都会缩小搜寻的范围,直至找到伪造硬币。

lcc1737的博客 825

TMS320F280049C 学习笔记4 Led_ex1_blinky 初始化函数及系统时钟

承接上一篇学习笔记,这次开始实际运行例程。本文概述了280049C的第一个实验 Led灯闪烁。同时也总结了系统的初始化函数和时钟配置。

whyorwhnt的专栏 7029

硬币问题(经典背包面试常考)

1.对应letecode链接:2.题目描述:3.解题思路: 下面我们写一下对应暴力的尝试:2.对应记忆化搜索3.严格位置依赖的版本其实就是将暴力递归进行改写而已:4.斜率优化:对应优化代码:1.对应letecode链接2.题目描述:3.解题思路:4.对应暴力递归代码:记忆化搜索代码:斜率优化代码:...

qq_56999918的博客 3352

从零开始,用MATLAB/Simulink手把手搭建一个无刷直流电机(BLDC)的控制模型

本文详细介绍了如何使用MATLAB/Simulink从零开始搭建无刷直流电机(BLDC)控制模型。通过可视化建模方法,避开繁琐的数学推导,直接构建三相逆变器、电机本体参数化模型、霍尔传感器与换相逻辑实现,以及速度闭环控制设计。文章还提供了PID控制器整定、抗饱和处理和系统调试的实用技巧,帮助工程师快速掌握BLDC控制系统的仿真与实现。

weixin_27741699的博客 254

DMDiff(2025):一种基于SAR光学数据融合的双分支多模态条件引导扩散模型-k学长深度学习专栏

DMDiff提出了一种基于扩散模型的多模态遥感图像去云方法,通过双分支网络分别提取SAR的结构信息和光学图像的光谱特征,再利用跨模态注意力机制实现特征融合。创新性地采用IAP策略直接预测无云图像而非噪声,有效解决了传统方法在遥感图像处理中易出现的光谱失真问题。实验表明该方法在PSNR等指标上显著优于现有技术,但存在计算量大、生成速度慢等不足。未来可结合加速采样策略和几何约束进一步优化。

421

硬币问题 经典dp

题目描述: 给出一些面额硬币,求构成N的最少硬币数量。如2,3,5 3枚硬币,求给出N=11的最少硬币数量。 如果用贪心算法,那么有一定几率可以正确,但是有时候会有例外: 比如贪心是一直取最大,那么就会发现取不到11组成,但是的确存在—-3+3+5或3+3+3+2取最少,为3. dp[i] = min{dp[i-a1]+1,dp[i-a2]+1……}. 这里a1,a2是可以使用

a568283992的博客 646

基于STM32F1XX 、HAL库的OPT4001-Q1环境光传感器驱动应用C语言程序设计

OPT4001-Q1 的输出是半对数 的,具有 9 个二进制对数满量程照度范围,每个范围内具有高度线性响应,使得 PicoStar™ 型号的测量能力为 312.5μlux 至 84klux,USON 型号的测量能力为 400µlux 至 107klux。// 禁用中断(示例)

PP_Cottage的博客 461

leetcode322. 零钱兑换 经典dp 凑硬币问题

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 示例 2: 输入: coins = [2], amount = 3 输出: -1 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/coin-change 著作

马角的逆袭的博客 363

全网最全RT-DETR涨点改进,基于官方源码1:1还原,在Ultralytics项目中配置rtdetr-r18、rtdetr-r34、rtdetr-r50、rtdetr-r101版本~小论文大论文必备

本文详细介绍了如何将RT-DETR的ResNet18/34/50/101/154版本移植到ultralytics项目中。主要内容包括:1) RT-DETR核心特点,如高效混合编码器、IoU感知查询选择等;2) 提供完整ResNet核心代码;3) 分步配置指南,包括创建模块文件和修改tasks.py;4) 各版本yaml配置文件的创建方法。该方案可帮助研究者快速实现RT-DETR改进,适用于目标检测相关论文研究。所有配置文件均可正常运行,为实验部署提供了便利。

Ai缝合怪、助力小伙伴高效发论文 3918

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

经典DP之硬币局

经典DP之硬币局 罗列从易到难的经典硬币DP 嘻嘻,昨天晚上一不小心把书翻了翻,看到自己不熟练的部分,昨天下定决心要做一个全面的总结,于是乎~今天就来啦,嘻嘻,不得不说,这本书是真的买值了呀,我可不能辜负它啦,其实下面的题目大多数算法课高老师都讲过,只不过我那时候就是听听,敲了敲代码,没有进行总结,于是很容易忘,也没有形成总体的知识体系,做题不能立刻get到是什么方向=-=今早上完课就做了几道cf...

qq_44624316的博客 280

数学建模模型总结

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

DP经典应用(五)硬币问题

问题描述:题目:有n种硬币,面值分别为V1,V2,…Vn,每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值分析:按照解决动态规划的前3个步骤我们进行分析: 1.刻画一个最优解的结构特征: 定义minv[i]和maxv[i]分别为面值为i时的最少硬币数目和最多硬币数目。 而minv[0] = max[0] = 0;这就是边界值,因为面值为0时,

karry_zzj的博客 682

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

入门经典--硬币问题dp递归加递推

#include #include #include using namespace std; int v[101],s,n,mini[10001],maxn[10001],visi[10001]; int MAX(int a,int b) { return a>b?a:b; } int MINI(int a,int b) { return a<b?a:b; } int

qq_33312212的博客 1321

DP DAG 9-3硬币问题(算法竞赛入门经典p162)

有n种硬币,面值分别为V1,V2,V3,.....Vn,每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值。1=100, 0 思路:本题是固定终点和起点的DAG动态规划。我们把每种面值看做一个点,表示“还需要凑足的面值”,则初始状态为S,目标状态为0。如当前在状态i,没使用一个硬币j,状态变转移到i-Vj。 我对于这道题目的意义就是

twobqn123的专栏 2193

经典DP问题总结(1)——硬币问题、最长公共子序列、斐波拉契数列、整除子序列问题

目录 1.斐波拉契数列问题 2.被3整除的子序列问题 3. 硬币问题 4.最长公共子序列 参考: 1.斐波拉契数列问题 参见《从递归到DP——再看斐波拉契数列问题》https://blog.youkuaiyun.com/qq_41895747/article/details/103915415 科普斐波拉契数列: 斐波那契数列(Fibonacci sequence),又称黄金分割...

沉迷单车的追风少年 717

HDU 2069 & UVA 674 Coin Change(换硬币 dp 入门经典水题,背包问题)

Coin Change Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-...

小夏 的博客 2742

DP——最少硬币问题

dp——最少硬币问题

m0_74435839的博客 480

【leetcode】最少的硬币数目

背包问题集合、完全背包问题、0-1背包问题、转换为背包问题

weixin_44627672的博客 1048

[leetcode]面试题 08.11. 硬币

个人博客:https://javaniuniu.com/ 本题涉及算法:完全背包问题(dp) 题目 面试题 08.11. 硬币 硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007) 示例 示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额: 5=5 5=1+1+1+1+1 示例...

java牛牛的博客 673

Lucky Coins——浅析概率

文章目录古典概率 古典概率 定义:设一个实验有n个等可能的结果,而事件

weixin_43908980的博客 605
上一篇: 矩形嵌套(经典dp)
下一篇: 二叉树的遍历(递归)
OFShare
博客等级 码龄11年 8粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值