Optimal Coin Change(完全背包计数)

2023-11-10

题目描述
In a 10-dollar shop, everything is worthy 10 dollars or less. In order to serve customers more effectively at the cashier, change needs to be provided in the minimum number of coins.
In this problem, you are going to provide a given value of the change in different coins. Write a program to calculate the number of coins needed for each type of coin.
The input includes a value v, a size of the coinage set n, and a face value of each coin, f1, f2, …, fn. The output is a list of numbers, namely, c1, …, cn, indicating the number of coins needed for each type of coin. There may be many ways for the change. The value v is an integer satisfying 0 < v ≤ 2000, representing the change required
in cents. The face value of a coin is less than or equal to 10000. The output of your program should take the combination with the least number of coins needed.
For example, the Hong Kong coinage issued by the Hong Kong Monetary Authority consists of 10 cents, 20 cents, 50 cents, 1 dollar, 2 dollars, 5 dollars and 10 dollars would be represented in the input by n = 7, f1 = 10, f2 = 20, f3 = 50, f4 = 100, f5 = 200, f6 = 500, f7 = 1000.
输入
The test data may contain many test cases, please process it to the end of the file.
Each test case contains integers v, n, f1, …, fn in a line. It is guaranteed that n ≤ 10 and 0 < f1 < f2 < …< fn.
输出
The output be n numbers in a line, separated by space. If there is no possible change, your output should be a single −1. If there are more than one possible solutions, your program should output the one that uses more coins of a lower face value.
样例输入

2000 7 10 20 50 100 200 500 1000
250 4 10 20 125 150
35 4 10 20 125 150
48 4 1 8 16 20
40 4 1 10 13 37
43 5 1 2 21 40 80

样例输出

0 0 0 0 0 0 2
0 0 2 0
-1
0 1 0 2
3 0 0 1
1 1 0 1 0

题目大意:
给出一个钱的总数以及硬币的面额数,每种硬币的使用次数并没有限制,在保证能够用硬币得到总的金额的情况下,输出最小使用硬币的情况下每种硬币的使用个数,如果不能用所给出的硬币得到总的金额就输出 -1

对于前面判断能不能用所给面值的硬币得到总的金额用完全背包就很容易就可以解决,重点是如何进行路径的记录

int n, sum, a[maxn];
int ans[maxn], dp[maxn], cur[maxn];
int main()
{
    while (cin >> sum >> n) {
 
        memset(dp, 0x3f3f3f3f, sizeof(dp));
        memset(ans, 0, sizeof(ans));
        for (int i = 1; i <= n; i++) a[i] = read;
        dp[0] = 0;
        for (int i = 1; i <= n; i++) {
            for (int j = a[i]; j <= sum; j++) {
                if (dp[j - a[i]] < INF && dp[j - a[i]] < dp[j]) {
                    dp[j] = dp[j - a[i]] + 1;
                    cur[j] = j - a[i];///存下当前的
                }
            }
        }
        ///cout<<dp[sum]<<endl;
        if (dp[sum] == 0x3f3f3f3f) puts("-1");
        else {
            ll t = sum;///记录总数
            while (t) {
                ans[t - cur[t]] ++;///每一个的数量
                t = cur[t];
            }
            for (int i = 1; i <= n; i++) {
                printf("%lld", ans[a[i]]);
                if (i != n) printf(" ");
            }
            puts("");
        }
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Optimal Coin Change(完全背包计数) 的相关文章

  • 蓝桥杯算法训练VIP-方格取数

    题目 题目链接 题解 动态规划 本题和这个题几乎是完全一样 那个博客写的巨清楚 所以这里不写了 代码 include
  • Research Productivity Index-概率dp

    题目描述 Angela is a new PhD student and she is nervous about the upcoming paper submission deadline of this year s research
  • MAX 的读书计划——dp

    题目描述 MAX 很喜欢读书 为了安排自己的读书计划 他会预先把要读的内容做好标记 A B 表示一个页段 即第 A 到 B 面 当然 A
  • Tree with Maximum Cost---CF1092F 树上DP

    F Tree with Maximum Cost time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstand
  • Crested Ibis vs Monster——AT动态规划思想

    题目描述 Ibis is fighting with a monster The health of the monster is H Ibis can cast N kinds of spells Casting the i th spe
  • leetcode买卖股票的最佳时机含手续费

    动态规划简单题 我们设置二维数组dp size 2 其中dp i 0 代表第i 天不持有股票的最大价值 其中dp i 1 代表第i天持有股票的最大价值 当天持有股票可以从前一天持有股票和前一天不持有股票现今买入转换得来 当天不持有股票可以从
  • 【力扣】96. 不同的二叉搜索树 <动态规划>

    力扣 96 不同的二叉搜索树 给你一个整数 n 求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种 返回满足题意的二叉搜索树的种数 示例 1 输入 n 3 输出 5 示例 2 输入 n 1 输出 1 提示 1 l
  • [leetcode] 鸡蛋掉落 Google面试题 dp

    题目链接 给你 k 枚相同的鸡蛋 并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑 已知存在楼层 f 满足 0 lt f lt n 任何从 高于 f 的楼层落下的鸡蛋都会碎 从 f 楼层或比它低的楼层落下的鸡蛋都不会破 每次操作
  • [Codeforces 1579G] Minimal Coverage

    You are given n lengths of segments that need to be placed on an infinite axis with coordinates The first segment is pla
  • P1020 [NOIP1999 普及组] 导弹拦截

    题目 题目链接 题解 看了网上好多讲解的博客 都好屑啊 就当已知第一问求解最长不上升子序列长度 第二问求解最长上升子序列长度 如果想知道证明 可以自行百度Dilworth定理 或者参考这个博客 未优化 O n2 未优化的比较基础 第一问 状
  • 动态规划之完全背包问题

    完全背包问题 题目 有 N N N 种物品和一个容量为 V V V 的背包 每种物品都有无限件可用 放入第 i
  • 左孩子右兄弟 蓝桥杯1451 python

    题目描述 对于一棵多叉树 我们可以通过 左孩子右兄弟 表示法 将其转化成一棵二叉树 如果我们认为每个结点的子结点是无序的 那么得到的二叉树可能不唯一 换句话说 每个结点可以选任意子结点作为左孩子 并按任意顺序连接右兄弟 给定一棵包含 N 个
  • 拿金币 蓝桥杯

    问题描述 有一个N x N的方格 每一个格子都有一些金币 只要站在格子里就能拿到里面的金币 你站在最左上角的格子里 每次可以从一个格子走到它右边或下边的格子里 请问如何走才能拿到最多的金币 输入格式 第一行输入一个正整数n 以下n行描述该方
  • 2021年蓝桥杯A组省赛-左children右sibling

    CXXX有毛病 左孩子右兄弟 字眼很敏感吗 题目 题目链接 题解 贪心 DFS 以 u u u 为根的子树选择包含节点最多的以 v v v 为根的子树作为最后连接的右兄弟能保证树向下延展的最多 所以重点转换为了计算以
  • 最短Hamilton路径

    题目 题目链接 题解 状压dp f i j 表示从0点按照路径i走到j点的最短距离 其中i为二进制数 1表示走过某点 0表示未走过某点 比如10010表示经过了1 4两个点 而不经过0 2 3点 状态转移为 假设沿路径i走到j点经过k点 且
  • LeetCode338. 比特位计数

    题目连接 https leetcode cn com problems counting bits 解题思路 这道题需要计算从 0 到 num 的每个数的二进制表示中的 1 的数目 最直观的方法是对每个数直接计算二进制表示中的 1 的数目
  • 过河卒 蓝桥杯 755

    题目描述 如图 A 点有一个过河卒 需要走到目标 B 点 卒行走规则 可以向下 或者向右 同时在棋盘上的 C 点有一个对方的马 该马所在的点和所有跳跃一步可达的点称为对方马的控制点 例如上图 C 点上的马可以控制 99 个点 图中的 P1
  • UVa 1347 Tour

    题目 Tour 题意 来自luogu John Doe想用最小的路程游览完所有目的地 每个目的地都用坐标xi yi表示 任何两目的地的xi都不相同 两目的地之间的路程是两点之间的直线距离 John是这样走的 他从最左边的点开始 然后只能向右
  • 最长上升子序列模板与优化后的模板

    未优化 include
  • 2021蓝桥杯模拟赛-跳跃

    题目 题目链接 题解 动态规划 算是比较基础的状态方程和状态定义 但是难点在于处理负权重的情况 代码 include

随机推荐

  • C++ Primer Plus 第二章编程练习

    整理了我自己编写的课后题答案 如果有问题或者看不懂的欢迎大家留言 小声说 所有内容纯手打 点个赞再走呗 第二章编程练习题 Practice 1 Practice 2 Practice 3 Practice 4 Practice 5 Prac
  • mysql忘记密码及ssh连接

    mysql忘记密码 我们在安装mysql或者其他的时候会遇到忘记密码的时候 这时候就需要对密码进行重置 话不多说 直接上步骤 1 停止当前mysql服务 service mysqld stop 2 然后通过跳过权限验证启动mysql服务 m
  • 2008年7月51CTO.com十大热点文章排行榜

    刚刚过去的7月 热点新闻和精彩的技术文章还是不少的 以下是51CTO com各主要频道的精彩实用文章及简介 经典实用文章推荐 组网频道7月热点 网管人员必备的常用命令 Windows环境下有很多通过命令实现网络管理的非常有效的工具 可惜知道
  • 11-5 读写一行字符

    1 读一行字符 gets 与 gets s 都可以用做读取用户控制台输入的一行字符 gets 仅接收一个参数 char 意为读取到换行符时将读取内容全部保存到 char 中 该函数的问题在于无法判断出读取到换行符之前共有多少字符 故 cha
  • 在Repeater控件中创建可隐藏区(原作)

    在Repeater控件中创建可隐藏区 原作 最新的一篇作品 发表在天极网上 http dev yesky com SoftChannel 72342371945218048 20041227 1893718 shtml
  • Nginx 增加二级目录的反向代理时,最常见的两个问题

    当我们想在某个Nginx网站中增加一个两级目录 当然也可以是很多级 作为反向代理时 如果使用常见的单个Nginx反向代理配置的方法 非常容易遇到配置有问题的情况 主要由如下两个问题造成 1 因为不是独立配置反向代理 所以Nginx Conf
  • 数学建模论文常用LaTeX代码(2021美赛)

    数学建模论文常用LaTeX代码 图片 单图 begin figure htbp centering includegraphics width 9 textwidth XXX pdf 图片相对位置 caption xxx 图片标题 labe
  • Ts学习笔记

    any 任何类型都可以赋值给any any也可以给任何类型赋值 unknown 任何类型可以赋值给 unknown 但是 unknown 类型赋值给其它类型需要对其进行类型缩小 type 类型一般都是大写字母开头 type Fish nam
  • 敏捷开发知识体系笔记

    敏捷开发知识体系整体框架 敏捷开发工程实践 项目管理 迭代开发 风险价值生命周期 多级项目规划 完整团队 每日站立会议 任务板 燃尽图 需求管理 需求订单 业务流程草图 用例驱动开发 用户故事 架构 演进的架构 演进的设计 基于组件的架构设
  • 同步服务器安装系统,时间同步服务器的配置方法

    知道什么是时间同步服务器的配置方法吗 下面是学习啦小编跟大家分享的是时间同步服务器的配置方法 欢迎大家来阅读学习 时间同步服务器的配置方法 方法 步骤 双击任务栏右下角 时间 打开 时间和日期 属性 设置对话框 2选择 Internet时间
  • SimpleDateFormat用法详解

    SimpleDateFormat类是一个以语言环境敏感的方式来格式化和解析日期的工具类 它允许你将日期格式化为字符串 或从字符串解析为日期 格式化日期为字符串 SimpleDateFormat sdf new SimpleDateForma
  • 在linux下编译多线程需要如下设置

    编译时这样输入命令 gcc xxx c o xxx out lpthread
  • LeetCode知识点总结 - 1710

    LeetCode 1710 Maximum Units on a Truck 考点 难度 Sorting Easy 题目 You are assigned to put some amount of boxes onto one truck
  • Xilinx 7系FPGA LVDS使用要注意了,供电不能搞错

    最近新做了一块板子 用到Spartan 7芯片对前级视频源叠加OSD菜单 前级会将HMDI转成LVDS送给FPGA处理 在原理图设计阶段没有仔细阅读fpga手册 导致LVDS BANK供电错误 应该接2 5V 实际接3 3V 且BANK供电
  • 射频与无线技术入门 读书记录

    一 基础概念 无线系统框图 瓦特W 功率测量单位 能量 功率 时间 如100W的灯泡亮了2小时 能量就是100w 2 就是200W H的能量 波段 使用字母表示一定范围的频率 载波 载波只能使用模拟信号 在这个模拟信号上承载模拟或者数字信息
  • 跨域的解决方案

    一 跨域 1 概念 指的是浏览器不能执行其他网站的脚本 它是由浏览器的同源策略造成的 是 浏览器对javascript施加的安全限制 2 同源策略 是指协议 域名 端口都要相同 其中有一个不同都会产生跨域 3 跨域流程 二 解决跨域方案 1
  • [转载] 陈皓——程序员技术练级攻略

    PS 原文出自酷壳上的陈皓对程序员从入门到精通的攻略 让你感受一下真正的大神吧 又是阿里人 他的文章真心不错 希望对你也有用 原文地址 http coolshell cn articles 4990 html 陈皓酷壳博客地址 http c
  • oracle failover mode,Oracle RAC FailOver配置

    Oracle RAC FailOver配置 Oracle RAC主要为数据库的应用提供了HA High Available 的环境 HA体现在负载均衡 loadbalance 和容错 failover 两个方面 Oracle RAC 的Fa
  • 机器学习---期望+方差+标准差+协方差

    1 期望 在概率论和统计学中 数学期望 mathematic expectation 或均值 亦简称期望 是试验中每次可能结果的概率乘以其结果的总和 是最基本的数学特征之一 它反映随机变量平均取值的大小 大数定律表明 随着重复次数接近无穷大
  • Optimal Coin Change(完全背包计数)

    题目描述 In a 10 dollar shop everything is worthy 10 dollars or less In order to serve customers more effectively at the cas