POJ 1384 Piggy-Bank 背包DP
来源:互联网 发布:郭富城 小美 知乎 编辑:程序博客网 时间:2024/05/21 17:24
所谓的完全背包,就是说物品没有限制数量的。
怎么起个这么intimidating(吓人)的名字?
其实和一般01背包没多少区别,不过数量可以无穷大,那么就可以利用一个物品累加到总容量结尾就可以了。
本题要求装满的,故此增加个限制就可以了。
#include <stdio.h>#include <stdlib.h>#include <string.h>inline int min(int a, int b) { return a < b? a : b; }const int MAX_W = 10001;const int MAX_N = 501;int val[MAX_N] = {0};int wei[MAX_N] = {0};int tbl[MAX_W];int bagDP(int N, int W){for (int i = 0; i <= W; i++) tbl[i] = 0;for (int j = wei[1]; j <= W; j += wei[1])tbl[j] = val[1] + tbl[j-wei[1]];for (int i = 2; i <= N; i++){for (int j = wei[i]; j <= W; j++){if (j-wei[i]==0 || tbl[j-wei[i]]){if (tbl[j]) tbl[j] = min(tbl[j],tbl[j-wei[i]]+val[i]);else tbl[j] = tbl[j-wei[i]]+val[i];}}}return tbl[W];}int main(){int E, F;//weight of an empty pig and of the pig filled with coinsint T, N;// P:value, W: weightscanf("%d", &T);while (T--){scanf("%d %d %d", &E, &F, &N);for (int i = 1; i <= N; i++){scanf("%d %d", &val[i], &wei[i]);}int ans = bagDP(N, F-E);if (ans) printf("The minimum amount of money in the piggy-bank is %d.\n", ans);else puts("This is impossible.");}return 0;}
1 0
- POJ 1384 Piggy-Bank 背包DP
- POJ 1384 Piggy-Bank(DP完全背包)
- poj 1114 Piggy-Bank 完全背包 dp
- POJ 1384 Piggy-Bank DP
- POJ 1384 Piggy-Bank (ZOJ 2014 Piggy-Bank) 完全背包
- poj 1384 Piggy-Bank 完全背包
- poj 1384Piggy-Bank(完全背包)
- POJ 1384 Piggy-Bank (完全背包)
- poj 1384 Piggy-Bank (完全背包)
- 完全背包练习-POJ-1384-Piggy-Bank
- poj 1384 Piggy-Bank---完全背包
- POJ 1384 Piggy-Bank 完全背包
- poj 1384 Piggy-Bank 多重背包问题
- POJ 1384 Piggy-Bank(完全背包问题)
- poj 1384 Piggy-Bank(完全背包)
- POJ 1384 Piggy-Bank(完全背包)
- poj 1384 Piggy-Bank(完全背包)
- 完全背包 poj 1384 Piggy-Bank
- org.hibernate.HibernateException: No Session found for current thread
- debug 记录(1)
- jxl创建Excel文件java代码示例
- #ifdef-#endif的作用及其使用技巧
- [索引] Volume 2. Data Structures
- POJ 1384 Piggy-Bank 背包DP
- 关于拍照,相册 取照片
- 栈和队列的简单讲解和函数用法
- Unix Domain Protocols
- css盒模型笔记
- 研磨Hadoop源码(六)ResourceManager启动分析2
- listview的listSelector在android2.3和2.2上的bug
- 数组
- UITableView的重用机制