【dp - 多重背包】575: Coin Changing
题目:
http://acm.swust.edu.cn/#/problem/575/490
题目描述
设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。 对于给定的1≤n≤10,硬币面值数组T和可以使用的各种面值的硬币个数数组Coins,以及钱数m,0≤m≤20001,编程计算找钱m的最少硬币数。
输入
第一行中只有1 个整数给出n的值,第2 行起每行2 个数,分别是T[j]和Coins[j]。最后1 行是要找的钱数m。
输出
最少硬币数,无解时输出-1
样例输入
3
1 3
2 3
5 3
18
样例输出
5
说明:
这道题可以用多重背包来解决,多重背包的思路就是一次可以取给定数量个物品的01背包。不过这道题目将硬币面值看作体积,然后找出装满背包总体积的最小硬币个数。故需要将dp数组初始化为inf,dp[0]的初值赋为0。至于无解情况,若最终状态能转移到dp[sum](sum代表找钱数m),则一定有解。
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=20005;
const int inf=0x3f3f3f3f;
int t[maxn],coin[maxn],dp[maxn];
int n,sum;
int main(){cin>>n;for(int i=1;i<=n;i++) cin>>t[i]>>coin[i];cin>>sum;for(int i=0;i<maxn;i++){dp[i]=inf;}dp[0]=0;for(int i=1;i<=n;i++){for(int j=1;j<=coin[i];j++){for(int k=sum;k>=t[i]*j;k--){dp[k]=min(dp[k],dp[k-t[i]*j]+j); //枚举装k件物品i的状态转移}}}if(dp[sum]==inf){cout<<-1<<endl;}else{cout<<dp[sum]<<endl;}return 0;
}
【dp - 多重背包】575: Coin Changing相关推荐
- hdu 1171 dp(多重背包)
View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...
- POJ 1742 Coins ( 经典多重部分和问题 DP || 多重背包 )
题意 : 有 n 种面额的硬币,给出各种面额硬币的数量和和面额数,求最多能搭配出几种不超过 m 的金额? 分析 : 这题可用多重背包来解,但这里不讨论这种做法. 如果之前有接触过背包DP的可以自然想到 ...
- Lightoj 1231 - Coin Change (I) (裸裸的多重背包)
题目链接: Lightoj 1231 - Coin Change (I) 题目描述: 就是有n种硬币,每种硬币有两个属性(价值,数目).问用给定的硬币组成K面值,有多少种方案? 解题思路: 赤果果的 ...
- POJ1276 多重背包DP 生命不息优化不止
POJ1276 多重背包DP题 这道题弄了一个早上-一看题目是多重背包题直接敲了一个三重for循环,无限TLE,下面附上好几种解法. Description A Bank plans to insta ...
- 《dp补卡——多重背包》
多重背包简介: 有N种物品和一个容量为V的背包.第i种物品最多有Mi件可用,每件耗费的空间为Ci,价值为Wi.求解将哪些物品装入背包可使得这些物品耗费的空间总和不超过背包容量,且价值总和最大. 将Mi ...
- 【qduoj - 142】 多重背包(0-1背包的另类处理,dp)
题干: ycb的ACM进阶之路 Description ycb是个天资聪颖的孩子,他的梦想是成为世界上最伟大的ACMer.为此,他想拜附近最有威望的dalao为师.dalao为了判断他的资质,给他出了 ...
- dp之多重背包poj2392
题意:有k种石头,高为hi,在不超过ai的高度下,这种石头可以放置,有ci种这个石头,求这些石头所能放置的最高高度......... 思路:以往的什么硬币种数,最大硬币数之类的,他们的硬币都已经是排好 ...
- hdu2844 amp; poj1742 Coin ---多重背包--两种方法
意甲冠军:你有N种硬币,每个价格值A[i],每个号码C[i],要求. 在不超过M如果是,我们用这些硬币,有多少种付款的情况下,.那是,:1,2,3,4,5,....,M这么多的情况下,,你可以用你的硬 ...
- 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包
动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...
最新文章
- C++中一个容易被忽视的名字查找规则
- 【Android开发】XML文件解析
- 笑联 x mPaaS | 12 个模块,全面小程序化,如何打造真正的一次开发复用多端?
- 设计师对孟菲斯设计风还不了解?
- 第四章节 窗体应用(windows应用程序)
- Keystore was tampered with, or password was incorr
- 速营社怎么赚钱,可以当副业吗
- o2o现状及未来发展趋势是什么?
- Pandas 01- Series
- Win10重装win7时一直显示windows启动中,不要慌
- 推荐10本程序员必读的书籍!
- has been blocked by CORS policy: Response to preflight request doesn‘t pass access control check
- Asus Eee Pc,看起来很不错
- Accumulation Degree
- 用HTML加css制作立体方块,CSS3 三维变形实现立体方块特效源码
- 2022 绩效评估指南
- MySQL数据文件被误删,如何进行恢复?
- 哈尔滨火车站下面有三个火车票代售点,假如哈尔滨到北京的火车票总共是200张,如何用程序来实现三个售票点同时卖票的功能。
- 2021年全球椎体成形术和椎体后凸成形术收入大约1269.7百万美元,预计2028年达到2222.5百万美元
- Dae-Da-Lus小组idea集锦