问题:已知V种不同面值的硬币,假设每种硬币的数量无限,求支付N元有多少种不同的方案?

例:

现在有3种货币:1元、2元、5元,需要向别人支付10元。

完全背包思路:

从左到右依次考虑每种货币,有两种操作:1.选   2.不选,同一种货币可以选择多次。
令货币的价值=占用背包的空间,支付总价钱作为背包的容量,那么背包的容量等价于物品的价值,也就是我得到价值为K的物品,背包容量就减少了K。

如果取得最大价值时,背包恰好装满,就代表放进背包的货币刚刚好能凑出支付的总价钱(容量为V的背包能取得的最大价值也刚好是V)

如果取得最大价值时,背包还没有装满(但已经没有最优方案了),这个时候放进背包的货币凑不出支付的总价钱

DP设计思路:

考虑前 i 种货币恰好能支付 v 元的方案数量是 dp[ i ][ v ],现在有两种方案,1、我选择货币 i 作为方案  2、不选择货币 i 作为方案,每种方案都对应着不同的状态转移

选择用第 i 种货币支付,那么支付方案数量 = dp[ i ][ v - w[i] ] (w[i] 是货币 i 的面值)

不选择用第 i 种货币支付,那么支付方案数量 = dp[ i-1 ][ v ]

所以考虑前 i 种货币恰好能支付 v 元的方案数总数 = dp[ i ][ v - w[i] ] + dp[ i-1 ][ v ]

选择用第 i 种货币的时候,为什么状态转移到dp[ i ][ v - w[i] ] 而不是 dp[ i-1 ][ v - w[i] ] 呢?

因为同一种货币可以选择多次,选择货币 i 后,虽然背包容量变成了 v - w[i] ,但是依然可以考虑前 i 种货币,所以是dp[ i ][ v - w[i] ]

如果不选择货币 i ,那么背包容量就不会变,但是我们可以的考虑的就只有前 i-1 种货币啦,所以是dp[ i-1 ][ v ]

所以转移公式: dp[i][v] = dp[ i ][ v-w[i] ] + dp[ i-1 ][ v ]

边界:当只有一种货币的时候,也就只有一种方案,所以 dp[1][ v ] = 1

背包思想计算方案的总数(货币系统)相关推荐

  1. [完全背包] 货币系统(完全背包+求方案数)

    文章目录 0. 前言 1. 完全背包+求方案数+思维 0. 前言 相关: [背包] 背包问题算法模板(模板) 强相关: [完全背包] 买书(完全背包+裸题) [完全背包] 货币系统(完全背包+求方案数 ...

  2. 【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵

    洛谷 P5020货币系统 https://www.luogu.com.cn/problem/P5020 思路是把货币从小到大排序,然后按顺序依次完全背包dp,每次dp检查i-1种面值的货币能不能凑出第 ...

  3. USACO 2.3 货币系统(背包/生成函数)

    Description 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统. [In their own rebellious way],他们对货币的数值感到好奇. 传统地,一个货币系统是由 ...

  4. 洛谷P1474 [USACO 2.3]货币系统 Money Systems [2017年4月计划 动态规划04]

    P1474 货币系统 Money Systems 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1 ...

  5. DP学习之USACO货币系统

    Description 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统.  [In their own rebellious way],,他们对货币的数值感到好奇.  传统地,一个货币系 ...

  6. Codeup-问题 C: 货币系统

    题目描述 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统. [In their own rebellious way],,他们对货币的数值感到好奇. 传统地,一个货币系统是由1,5,10 ...

  7. 问题 C: 货币系统

    题目描述 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统. [In their own rebellious way],他们对货币的数值感到好奇. 传统地,一个货币系统是由1,5,10, ...

  8. java扫描试卷改分,电子阅卷系统方案 电脑改卷系统

    电子阅卷系统方案 电脑改卷系统 网上阅卷系统包括: 系统管理模块:完成阅卷系统的客户管理,权限分配,考卷的分值设定.题目设定.标准答案.教师阅卷分配等功能. 试卷扫描模块:完成考生原始考卷的扫描,并将 ...

  9. 大数据流式计算:关键技术及系统实例

    大数据流式计算:关键技术及系统实例 孙大为1, 张广艳1,2, 郑纬民1     摘要:大数据计算主要有批量计算和流式计算两种形态,目前,关于大数据批量计算系统的研究和讨论相对充分,而如何构建低延迟. ...

最新文章

  1. 配置IPsec Tunnel With TACACS+ User Authentication
  2. boost::detail::sp_typeinfo_相关的测试程序
  3. 7-1 内存分区分配--首次适应算法 (100 分)
  4. Java 8 StringJoiner
  5. 月薪15k起,想进入这个行业有哪些书值得读?
  6. RPC远程过程调用概念及实现
  7. Exchange 2010部署
  8. win 8.1 安装framework3.5
  9. css实现圆球旋像水波波动_66 个超有用的CSS 特效!
  10. redhat7 虚拟机 取消屏幕保护或自动休眠时间
  11. 《Python游戏编程入门》第二章编程挑战
  12. sqlite developer注册码(转)
  13. htlm5实习报告_JSP实习报告
  14. 【C++初阶:STL简介】
  15. java判断邮箱格式
  16. 深耕教学 常研常新——海门市高二历史教研活动掠影
  17. fleck 客户端_Fleck - 又一个灵感之源 #iPhone
  18. rstudio的数据集怎么建立和保存_在R Studio中保存
  19. android locale app内设置,Android app应用多语言切换功能实现
  20. 裁员不可怕,可怕的是行业在发生巨变,而你却原地踏步

热门文章

  1. 苹果裁员逾200人,拿无人驾驶“开刀”
  2. 清北浙交大比拼,南大强势上榜,AI到底哪家强?
  3. 强化学习入门教程(附学习大纲)
  4. Java 8 开发的 4 大技巧
  5. 实现数据“一键脱敏”,Sharding Sphere帮你搞定
  6. 绝了!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!
  7. 三种 MySQL 大表优化方案
  8. Java之戳中痛点之 synchronized 深度解析
  9. NLP专栏|图解 BERT 预训练模型!
  10. 剑指offer_第6题_旋转数组的最小数字