poj 1787 Charlie's Change
来源:互联网 发布:淘宝王成勇培训靠谱吗 编辑:程序博客网 时间:2024/05/22 06:24
题目大意:
有4中硬币,给你一个价值v的背包,和四种硬币的数量,让你在装满背包的情况下使用的钱币尽量多,然后输出几种钱币的使用;
解题思路:
这道题目用多重背包和完全背包都可以做,下面这段代码我是参考的别人的代码写的。
首先要注意的是,在进行状态转移的时候,一定要保证上一个状态出现过;
used【j】表示价值达到j的时候一种物品的使用次数;
path【j】表示上一次最优状态的时候的价值的总和;
dp【j】标志背包体积达到j的时候最多使用的钱币数
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){int v;int num[4];int val[5]={1,5,10,25};while(~scanf("%d",&v)){for(int i=0;i<4;i++)scanf("%d",&num[i]);if(v==0&&num[0]==0&&num[1]==0&&num[2]==0&&num[3]==0)break;int dp[10010];int path[10010];int used[10010];memset(path,-1,sizeof(path));memset(dp,-1,sizeof(dp));dp[0]=0;for(int i=0;i<4;i++){memset(used,0,sizeof(used));for(int j=val[i];j<=v;j++){if(dp[j-val[i]]+1>dp[j]&&dp[j-val[i]]>=0&&used[j-val[i]]<num[i]){dp[j]=dp[j-val[i]]+1;used[j]=used[j-val[i]]+1;path[j]=j-val[i];}}}int ans[26]={0};while(path[v]!=-1){ans[v-path[v]]++;v=path[v];}if(dp[v]<0)printf("Charlie cannot buy coffee.\n");elseprintf("Throw in %d cents, %d nickels, %d dimes, and %d quarters.\n", ans[val[0]], ans[val[1]], ans[val[2]], ans[val[3]]);}}
0 0
- POJ 1787 Charlie's Change
- POJ 1787 Charlie's Change
- poj 1787 Charlie's Change
- poj 1787 Charlie's Change
- POJ 1787 Charlie's Change
- poj 1787 Charlie's Change
- Charlie's Change POJ
- POJ 1787 Charlie's Change 背包问题
- POJ 1787 Charlie's Change 背包问题
- POJ 1787 Charlie's Change / 完全背包
- POJ--1787--Charlie's Change--背包变形
- POJ 1787 Charlie's Change 最多金币
- Charlie's Change(POJ-1787)
- POJ 1787 Charlie's Change 笔记
- POJ 1787 Charlie's Change(多重背包+记录路径)
- poj 1787 Charlie's Change(背包问题输出路径)
- 【POJ】1787 Charlie's Change(完全背包)
- poj 1787 Charlie's Change 题解(动态规划)
- SpringMVC工作原理
- The Accomodation of Students
- Phone开发之深入浅出 (1) — ARC是什么
- 继承时构造函数、析构函数的顺序研究
- 如何用CFileDialog得到一个文件夹的路径?
- poj 1787 Charlie's Change
- java 网络通讯工具类
- Referenced file contains errors (http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd#).
- RFID第三周作业
- 模式识别:分类器的性能评价
- Courses
- 第31天【健身】
- poj 2871 A Simple Question of Chemistry
- 杭电 HDU 1034 Candy Sharing Game