【动态规划】简单背包问题II
2016-08-15 18:23
169 查看
问题B:【动态规划】简单背包问题II
时间限制:1Sec内存限制:64MB提交:21解决:14
[
题目描述
张琪曼:“为什么背包一定要完全装满呢?尽可能多装不就行了吗?”李旭琳:“你说得对,这和墨老师曾告诉我们的‘日中则昃,月满则亏’是一个道理。”所以,现在的问题是,她们有一个背包容量为v(正整数,0≤v≤20000),同时有n个魔法石(0≤n≤30),每个魔法石有一个体积(正整数)。要求从n个魔法石中,任取若干个装入包内,使背包的剩余空间为最小。
输入
第一行为一个整数,表示背包容量,第二行为一个整数,表示有n个魔法石,接下来n行,分别表示这n个魔法石的各自体积。输出
只有一个整数,表示背包剩余空间。样例输入
24 6 8 3 12 7 9 7
样例输出
0 代码:
#include<cstdio> #include<iostream> #include<cstring> usingnamespacestd; intdp[35][20005]; intmain(){ intT; intM; intt[20005]; intp[20005]; while(scanf("%d%d",&T,&M)!=EOF){ for(inti=0;i<=M;i++){ for(intj=0;j<=T;j++){ dp[i][j]=0; } } dp[0][0]=0; for(inti=1;i<=M;i++){ scanf("%d",&t[i]); } for(inti=1;i<=M;i++){ for(intj=1;j<=T;j++){ if(j>=t[i]){ dp[i][j]=max(dp[i-1][j],dp[i-1][j-t[i]]+t[i]); }else{ dp[i][j]=dp[i-1][j]; } } } printf("%d\n",T-dp[M][T]); } return0; }
相关文章推荐
- 【动态规划】简单背包问题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背包问题 动态规划