ACM:动态规划,物品无限的背包问题(完全背包问题)
2014-06-11 22:18
369 查看
题目:有n种物品,每种物品都有无限件可用。第i种物品的体积是vi,重量是wi。选一些物品装到一个容量为C的背包中,使得背包内物品在总体积不超过C的前提下重量尽量大。
分析,完全背包问题,相对于上上篇文章的硬币问题,只是由DAG上的无权图变成了这里的DAG上的带权图!
输出最后满足体积不超过背包容量的条件下,背包中的最大重量。
代码:
分析,完全背包问题,相对于上上篇文章的硬币问题,只是由DAG上的无权图变成了这里的DAG上的带权图!
输出最后满足体积不超过背包容量的条件下,背包中的最大重量。
代码:
#include <iostream> #include <string> using namespace std; const int MAXN = 10000;int n, S, V[MAXN], d[MAXN], vis[MAXN], W[MAXN]; const int INF = 100000000; int dpmax(int S) { if(vis[S]) return d[S]; vis[S] = 1; int &ans = d[S]; ans = -1 << 30; for(int i = 1; i <= n; ++i) { if(S >= V[i]) ans = max(ans, dpmax(S - V[i]) + W[i]); } return ans; } int main() { memset(vis, 0, sizeof(vis)); cin >> n >> S; for(int i = 1; i <= n; ++i) { cin >> V[i] >> W[i]; } cout << dpmax(S) << endl; return 0; }
相关文章推荐
- 动态规划——物品无限的背包问题
- 动态规划:完全背包问题-HDU1114-Piggy-Bank
- 动态规划初步-完全背包问题
- 算法竞赛宝典 动态规划 货币系统问题(完全背包+一维优化)
- 动态规划之背包问题(二):完全背包问题
- HDU 2159 FATE (动态规划dp之二维完全背包问题)
- 动态规划之01背包、完全背包问题
- HDOJ 题目1284钱币兑换问题(动态规划,完全背包)
- 动态规划-----背包问题-----01背包,完全背包,多重背包
- 动态规划-----背包问题-----01背包,完全背包,多重背包
- 动态规划--背包问题(0-1背包,完全背包,多重背包)
- 动态规划:最少硬币找零问题、01背包问题、完全背包问题
- 动态规划-完全背包问题
- 完全背包问题动态规划c++
- 第二讲 完全背包问题——第二个基本的背包问题模型,每种物品可以放无限多次
- 动态规划—完全背包问题
- 动态规划-完全背包问题
- 背包问题动态规划详细探究
- 0-1背包问题的动态规划解法
- 动态规划——背包问题变形 收藏