// 题意 给定一个数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的更多相关文章

  1. poj 1787 Charlie's Change (多重背包可作完全背包)

    Charlie's Change Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3792   Accepted: 1144 ...

  2. [POJ 1787]Charlie's Change (动态规划)

    题目链接:http://poj.org/problem?id=1787 题意:有4种货币分别是1元,5元,10元,20元.现在告诉你这四种货币分别有多少个,问你正好凑出P元钱最多可以用多少货币.每种货 ...

  3. POJ 1787 Charlie's Change (完全背包/多重背包,输出方案的物品个数)

    网上说是多重背包,因为要输出方案,还要记录下路径,百度一下题解就可以. 自己做的时候,还没了解过多重背包,该题直接往完全背包思考了.咖啡的钱看作总的背包容量,1.5.10.25分别代表四种物品的重量, ...

  4. POJ 1787 Charlie&#39;s Change

    多重背包 可行性+路径记录 题意是说你要用很多其它的零钱去买咖啡.最后输出你分别要用的 1,5 ,10 .25 的钱的数量. 多重背包二进制分解.然后记录下 这个状态.最后逆向推就可以. #inclu ...

  5. poj 1787 背包+记录路径

    http://poj.org/problem?id=1787 Charlie's Change Time Limit: 1000MS   Memory Limit: 30000K Total Subm ...

  6. (多重背包+记录路径)Charlie's Change (poj 1787)

    http://poj.org/problem?id=1787   描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...

  7. Charlie's Change POJ - 1787

    Time limit 1000 ms Memory limit 30000 kB description Charlie is a driver of Advanced Cargo Movement, ...

  8. 专题复习--背包问题+例题(HDU 2602 、POJ 2063、 POJ 1787、 UVA 674 、UVA 147)

    *注 虽然没什么人看我的博客但我还是要认认真真写给自己看 背包问题应用场景给定 n 种物品和一个背包.物品 i 的重量是 w i ,其价值为 v i ,背包的容量为C.应该如何选择装入背包中的物品,使 ...

  9. Charlie's Change(完全背包+路径记忆)

    Charlie's Change Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3176   Accepted: 913 D ...

随机推荐

  1. Java多线程——<二>将任务交给线程,线程声明及启动

    一.任务和线程 <thinking in java>中专门有一小节中对线程和任务两个概念进行了具体的区分,这也恰好说明任务和线程是有区别的. 正如前文所提到的,任务只是一段代码,一段要达成 ...

  2. matlab中函数fscanf

    matlab中函数fscanf matlab中函数fscanf在文件读取方面的实例如下: 从文件中有格式地读数据 fscanf 语法1:[a,count]=fscanf(fid,format,size ...

  3. 【锋利的JQuery-学习笔记】输入框提示语-隐藏/显示

    html <div class="search"> <input type="text" id="inputSearch" ...

  4. poj 3170

    两遍bfs ~ #include <cstdio> #include <cstdlib> //#include <cmath> #include <map&g ...

  5. Unity3D脚本中文系列教程(九)

    Unity3D脚本中文系列教程(八) name 对象名称hideFlags 该物体是否被隐藏,保存在场景中或被用户修改继承的函数 GetInstanceID 返回该物体的实例id继承的类函数 oper ...

  6. Unity3d修改FBX文件的动画名方法

    问题描述:FBX文件导入Unity3d后的动画名字一般都是 “Take 001”并且无法修改!如何修改它呢? 解决方法:解决方法其实很简单,只要你按照Unity3d的FBX文件命名规则,压根就不会存在 ...

  7. 源代码管理工具TFS2013安装与使用【转载】

    本文来源:博客园:http://www.cnblogs.com/suxinlcq/p/3956930.html 作者:suxin 最近公司新开发一个项目要用微软的TFS2013进行项目的源代码管理,以 ...

  8. RN学习1——前奏,app插件化和热更新的探索

    react_native_banner-min.png React Native(以下简称RN)有大量前端开发者的追捧.前端开发是一个活跃的社区,一直尝试着一统前后端,做一个全栈开发,RN就是他们在客 ...

  9. SQLite操作(C# )

    C#连接SQLite的...方法 http://www.cnblogs.com/virusswb/archive/2010/09/17/SQLite1.html 1 SQLite简介 SQLite,是 ...

  10. 1.Spring IoC简单例子

    Spring IoC简单例子 1.IHelloMessage.java package com.tony.spring.chapter01; public interface IHelloMessag ...