51nod 1101 换零钱 【完全背包变形/无限件可取】
输入1个数N,N = 100表示1元钱。(1 <= N <= 100000)
输出Mod 10^9 + 7的结果
5
4
#include<cstdio> #include<cstring> #include<queue> #include<iostream> #include<stack> #include<algorithm> #define maxn 105 #define maxm 50005 #define INF 0x3f3f3f3f #define ll long long #define MOD 1000000007 using namespace std; /* 每件物品无穷多个! 它的实际意义:依次取出可用硬币集合中的每一种硬币,例如当前取出的硬币为3元硬币,设val(i)为凑成i元的方法数,则val(i)自然要增加val(i-3),因为3元硬币的存在,所有能凑成(i-3)元的方法都可通过增加一枚3元硬币而凑成i元。 */ int w[13]={1,2,5,10,20,50,100,200,500,1000,2000,5000,10000}; int v[7]={1,2,5,10,20,50}; int d[110000];int main() {int n,c;scanf("%d",&n);d[0]=1;for(int i=0;i<13;i++)for(int j=w[i];j<=n;j++)d[j]=(d[j]+d[j-w[i]])%MOD;printf("%d\n",d[n]); } /* dp[i][j]: 1. 保持金额不变, 减少货币种数 2. 保持货币种数,减少金额大小 if(i>=j) dp[i][j] = dp[i][j-1] + dp[i-j][j] if(i<j) dp[i][j] = dp[i][i]; 对于能影响兑换种数多少存在2个变量, 第一个是货币种数,第二个是金额多少, 所以递归向着2个方面进行, 1. 保持金额不变, 减少货币种数 2. 保持货币种数,减少金额大小. 所以形成了2叉树. 这是离散的情况, 在微积分中我们也可以看到例子, 对于有2个变量函数进行微分,做偏微分时, 先保持第一个变量,对第二个变量求导,再保持第二个变量,对第一个变量求导.dp[i](i为硬币的币值,即 1 <= i <= N) 中 当coins[j]( 1 <= j <= 13)(放进去 + 不放进去)两种场景的和 好比,coins[] = {1, 2, 5} dp[2]有两种方案, dp[2][0] = dp[1][0] = 1; dp[2][1] = dp[0][2](直接选择一枚2分硬币的结果) + dp[1][0](2个1分硬币的结果) = 2 dp[2][2] = 0 + dp[2][1] = 2 (因为价值为5的硬币放不进去,所以只能选择不放) PS: MOD = (10^9 + 7) 每步的结果都要MOD一下 >.< */
转载于:https://www.cnblogs.com/Roni-i/p/8953409.html
51nod 1101 换零钱 【完全背包变形/无限件可取】相关推荐
- 51nod 1101 换零钱 完全背包的变型 动态规划
题目: 思路: for(int i = 0;i < 13; i++){for(int j = a[i];j <= n; j++){dp[j] = (dp[j] + dp[j-a[i]])% ...
- 51nod 1101 换零钱 简单dp
题意:问在现有面值金额下 输入一个m可以由多少种不同的金额组成 那么可以定义dp[i]表示i金额由多少种不同的金额组成方式 转移方程:dp[i] = (dp[i] + dp[i-cost[j])%mo ...
- 51Nod-1101 换零钱【0/1背包+DP】
1101 换零钱 基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题 N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100 ...
- 小P的故事——神奇的换零钱 背包
小P的故事--神奇的换零钱 题目描述 已知A国经济很落后,他们只有1.2.3元三种面值的硬币,有一天小P要去A国旅行,想换一些零钱,小P很想知道将钱N兑换成硬币有很多种兑法,但是可惜的是他的数学竟然是 ...
- SDUTOJ 2777 小P的故事——神奇的换零钱 背包
小P的故事--神奇的换零钱 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 已知A国经济很落后,他们只有1.2.3元三种面值的硬币 ...
- 换零钱程序c语言,《SICP》换零钱的递归法与迭代法
咳咳..先说一段废话.. 最近开始看SICP这本书,正看到了换零钱的部分.看到里面那么多简明生动的例子,还有作者的细心讲解,真是唤起了对学习的无限激情.之前也看过王垠的一些文章,提到了诸如Lisp.s ...
- java零钱换整程序_贪心算法换零钱(java)
贪心算法思想 贪心算法总是做出在当前看来做好的选择.也就是说贪心算法并不从整体最后考虑,他做出的选择只是局部最优选择.他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解, ...
- codeforce Gym 101102A Coins (01背包变形)
01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...
- java零钱换整程序_透析递归应用-换零钱
题目源于<SICP>,这里做一下调整,如下: 给了面值为50元.20元.10元.5元.1元的五种零钱若干,思考把面值100元人民币换成零钱一共有多少种方式? SICP给出的递归算法思想如下 ...
最新文章
- 智能文档理解:通用文档预训练模型
- Docker操作命令详解
- GDCM:提取DICOM文件数据元素值字段的测试程序
- 【计算机系统设计】学习笔记(1)03,04
- android thread实例
- Mybatis中的动态SQL记录
- Python机器学习:多项式回归与模型泛化003过拟合与欠拟合
- 进程与服务的签名_服务器被黑客攻击后如何查找溯源攻击
- SQL基础笔试题--(一)
- Learn Linux The Hard Way — LinuxTOY
- C#事件-经典小例子
- Wi-Fi:802.11ac new feature Beamforming
- 机器学习入门09 - 特征组合 (Feature Crosses)
- 嵌入式--串口、RS232、RS485通信
- 几何图形及计算公式查询
- 华为认证有什么地方可以学习考取?
- 网络云存储技术Windows server 2012 (项目九 存储服务器文件的安全性配置与管理)
- c#编写activeX控件详细教程,底部附有下载地址
- loadrunner入门篇 - Vuser发生器
- 官宣!1024 程序员节日程发布,第一代程序员求伯君将出席大会
热门文章
- d. powerful ksenia_DEBON D.D |这才是每个女人应该拥有的
- 删除替换字符串中第一次出现的字符串
- git eclipse 取消误操作 ignore(忽略)文件
- MySQL中时间函数NOW()和SYSDATE()的区别
- 微信只显示分享朋友圈和好友 屏蔽其他的分享
- Apache发布NetBeans 10.0,增强对JDK 11的支持
- curl post file PHP
- ubuntu下针对php的thrift 安装折腾记录
- 九章基础算法02:栈和队列
- python对数字进行简单的可逆加密_Python实现简单的可逆加密程序实例