【动态规划】简单背包问题II
2016-08-03 17:40
295 查看
【动态规划】简单背包问题II
时间限制: 1 Sec 内存限制: 64 MB题目描述
张琪曼:“为什么背包一定要完全装满呢?尽可能多装不就行了吗?”李旭琳:“你说得对,这和墨老师曾告诉我们的‘日中则昃,月满则亏’是一个道理。”所以,现在的问题是,她们有一个背包容量为v(正整数,0≤v≤20000),同时有n个魔法石(0≤n≤30),每个魔法石有一个体积 (正整数)。要求从n个魔法石中,任取若干个装入包内,使背包的剩余空间为最小。
输入
第一行为一个整数,表示背包容量,第二行为一个整数,表示有n个魔法石,接下来n行,分别表示这n个魔法石的各自体积。输出
只有一个整数,表示背包剩余空间。样例输入
24 6 8 3 12 7 9 7
样例输出
0
#include <iostream> #include <cstring> using namespace std; int m,n,a[33],f[22222]; void OneZeroPack(int m,int v,int w) //0-1背包 { for(int i=m;i>=v;i--) f[i]=max(f[i],f[i-v]+w); } int main() { while(cin>>m>>n) { for(int i=0;i<n;i++) cin>>a[i]; memset(f,0,sizeof(f)); for(int i=0;i<n;i++) OneZeroPack(m,a[i],a[i]); cout<<m-f[m]<<endl; } return 0; }
相关文章推荐
- 【动态规划】简单背包问题II
- 动态规划简单题(-背包问题)
- 简单0-1背包问题(算法类别:动态规划)
- 动态规划解0-1背包问题
- 【笔记】【算法学习】【动态规划】背包问题总结(1)
- 一个简单的背包问题
- 01背包问题 动态规划解法
- 简单背包问题
- 0-1背包问题--动态规划解法
- 动态规划(背包问题)
- 0-1背包问题的两种解法(回溯法和动态规划)
- POJ 3132 Sum of Different Primes 动态规划 DP 0-1背包问题
- 简单背包问题(实际上是子集问题)
- POJ 3132 Sum of Different Primes 动态规划 DP 0-1背包问题
- 动态规划背包问题自己的理解:
- 动态规划解决0-1背包问题
- 动态规划 (Dynamic Programming) 之 背包问题合辑 (Knapsack, Subset Sum, Partition and change making problem )
- 简单背包(无价值总和)问题的实现。
- 用动态规划求解0-1背包问题
- POJ 3624 0-1背包问题 动态规划