poj 1787 Charlie's Change
// 题意 给定一个数p,要求用四种币值为1,5,10,25的硬币拼成p,并且硬币数要最多,如果无解输出"Charlie cannot buy
coffee.",1<=p<=1万,1<=硬币数量<=1万
// 多重背包
// 网上见有用完全背包 貌似那个也可以 而且要快些
// 一下是完全背包大致写法
for (i = 1; i <= 4; ++i) {
- memset(used,0,sizeof(used));
- for (j = mon[i]; j <= p; ++j)
- if (dp[j-mon[i]] + 1 > dp[j] && dp[j-mon[i]]
- && used[j-mon[i]] + 1 <= num[i]) {
- dp[j] = dp[j-mon[i]] + 1;
- used[j] = used[j-mon[i]] + 1;
- path[j] = j - mon[i];
- }
- }
#include <iostream>
#include <algorithm>
#include <queue>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MOD 1000000007
#define maxn 10010
int dp[maxn];
struct node{
int from;
int kind;
int num;
}rc[maxn];
int main()
{
int P;
int C[];
int V[]={,,,};
while(scanf("%d %d %d %d %d",&P,&C[],&C[],&C[],&C[]),P|C[]|C[]|C[]|C[]){// 坑爹开始忘记把P加入进行|了 // if(P==0) { printf("Charlie cannot buy coffee.\n");continue;}
memset(dp,,sizeof(dp));
int ans[]={,,,};
int i,j,k;
int tp;
dp[]=;
for(i=;i<;i++){
k=;
while(C[i]>=k){
tp=k*V[i];
for(j=P;j>=tp;j--)
if(dp[j-tp]&&dp[j]<dp[j-tp]+k)
{
dp[j]=dp[j-tp]+k;
rc[j].from=j-tp;
rc[j].kind=i;
rc[j].num=k;
}
C[i]-=k;
k=k<<;
}
if(C[i]){
k=C[i];
tp=k*V[i];
for(j=P;j>=tp;j--)
if(dp[j-tp]&&dp[j]<dp[j-tp]+k)
{
dp[j]=dp[j-tp]+k;
rc[j].from=j-tp;
rc[j].kind=i;
rc[j].num=k;
}
}
}
if(dp[P]){
j=P;
while(j){
ans[rc[j].kind]+=rc[j].num;
j=rc[j].from;
}
printf("Throw in %d cents, %d nickels, %d dimes, and %d quarters.\n",ans[],ans[],ans[],ans[]);
}
else
printf("Charlie cannot buy coffee.\n");
}
return ;
}
poj 1787 Charlie's Change的更多相关文章
- poj 1787 Charlie's Change (多重背包可作完全背包)
Charlie's Change Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3792 Accepted: 1144 ...
- [POJ 1787]Charlie's Change (动态规划)
题目链接:http://poj.org/problem?id=1787 题意:有4种货币分别是1元,5元,10元,20元.现在告诉你这四种货币分别有多少个,问你正好凑出P元钱最多可以用多少货币.每种货 ...
- POJ 1787 Charlie's Change (完全背包/多重背包,输出方案的物品个数)
网上说是多重背包,因为要输出方案,还要记录下路径,百度一下题解就可以. 自己做的时候,还没了解过多重背包,该题直接往完全背包思考了.咖啡的钱看作总的背包容量,1.5.10.25分别代表四种物品的重量, ...
- POJ 1787 Charlie's Change
多重背包 可行性+路径记录 题意是说你要用很多其它的零钱去买咖啡.最后输出你分别要用的 1,5 ,10 .25 的钱的数量. 多重背包二进制分解.然后记录下 这个状态.最后逆向推就可以. #inclu ...
- poj 1787 背包+记录路径
http://poj.org/problem?id=1787 Charlie's Change Time Limit: 1000MS Memory Limit: 30000K Total Subm ...
- (多重背包+记录路径)Charlie's Change (poj 1787)
http://poj.org/problem?id=1787 描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...
- Charlie's Change POJ - 1787
Time limit 1000 ms Memory limit 30000 kB description Charlie is a driver of Advanced Cargo Movement, ...
- 专题复习--背包问题+例题(HDU 2602 、POJ 2063、 POJ 1787、 UVA 674 、UVA 147)
*注 虽然没什么人看我的博客但我还是要认认真真写给自己看 背包问题应用场景给定 n 种物品和一个背包.物品 i 的重量是 w i ,其价值为 v i ,背包的容量为C.应该如何选择装入背包中的物品,使 ...
- Charlie's Change(完全背包+路径记忆)
Charlie's Change Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3176 Accepted: 913 D ...
随机推荐
- 能"干掉"苹果的中国"黑客"
他是全球发现苹果漏洞最多的人,他曾穷的住在小黑屋,他经常接到国家安全部门的电话,他差点堵住周鸿祎的路,他是谁? 无名英雄 我们最终还是没有见到吴石本人,即便他的生意合伙人刘盛(化名)已经应承了帮我们牵 ...
- 【log4net】配置文件
相关资料: http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html 注意: //如果为了使得应用程序的配置文件(web/app.con ...
- ural 1864
题意描述不清 而且还卡精度 ~~ #include <cstdio> #include <cstring> #include <iostream> using ...
- http://jingyan.baidu.com/article/08b6a591f0fafc14a9092275.html
http://jingyan.baidu.com/article/08b6a591f0fafc14a9092275.html http://jingyan.baidu.com/article/414e ...
- lintcode 中等题:permutations II 重复数据的全排列
题目 带重复元素的排列 给出一个具有重复数字的列表,找出列表所有不同的排列. 样例 给出列表 [1,2,2],不同的排列有: [ [1,2,2], [2,1,2], [2,2,1] ] 挑战 使用递归 ...
- lintcode :Valid Palindrome 有效回文串
题目: 有效回文串 给定一个字符串,判断其是否为一个回文串.只包含字母和数字,忽略大小写. 样例 "A man, a plan, a canal: Panama" 是一个回文. & ...
- lintcode:Singleton 单例
题目: 单例 单例是最为最常见的设计模式之一.对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例.例如,对于 class Mouse (不是动物的mouse哦),我们 ...
- 保障视频4G传输的流畅性,海康威视摄像头相关设置
我们目前的rtsp视频解决方案如下: 摄像头<---------->NVR(通过4G上传)<---------->easydarwin<---------->自己的 ...
- Sina App Engine(SAE)入门教程(5)- SaeSegment(中文分词服务)使用
分词能干什么? 提取一篇文章的关键字 检测特定的段落中有没有违禁词 智能机器人 …..尽你所想 开启SAE 分词服务 首先你需要在sae的管理面板开始分词服务后才能使用sae的服务.具体的开启操作: ...
- 2014-9-17二班----9 web project
http://localhost:8080/rwkj1/indexServlet 跳转 http://localhost:8080/rwk ...