【背包总结I】
来源:互联网 发布:mac上面怎么装office 编辑:程序博客网 时间:2024/05/22 01:25
1. 01背包
1.1求 《= tot 的最大值
#include <cstring>#include <cmath>#include <queue>#include <stack>#include <list>#include <map>#include <set>#include <string>#include <cstdlib>#include <cstdio>#include <algorithm>using namespace std; const int N = 10, W = 1000;int value[N], weight[N];int dp[W + 1];int n,tot;int main(){scanf("%d%d",&n,&tot);for(int i=0;i<n;i++){scanf("%d%d",&value[i],&weight[i]);} memset(dp,0,sizeof(dp));for(int i=0;i<n;i++){for(int j=tot;j>=weight[i];j--){dp[j] = max(dp[j],dp[j-weight[i]] + value[i]);}}printf("%d\n",dp[tot]); return 0;}
#include <iostream>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <list>#include <map>#include <set>#include <string>#include <cstdlib>#include <cstdio>#include <algorithm>using namespace std; const int N = 10, W = 1000;int value[N], weight[N];int dp[W + 1];int n,tot;int main(){scanf("%d%d",&n,&tot);for(int i=0;i<n;i++){scanf("%d%d",&value[i],&weight[i]);} memset(dp,-1,sizeof(dp));dp[0] = 0;for(int i=0;i<n;i++){for(int j=tot;j>=weight[i];j--){if(dp[j-weight[i]] >= 0)dp[j] = max(dp[j],dp[j-weight[i]] + value[i]);}}printf("%d\n",dp[tot]); return 0;}
1.3 输出一种方案
输出代码的图解
#include <iostream>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <list>#include <map>#include <set>#include <string>#include <cstdlib>#include <cstdio>#include <algorithm>using namespace std; const int N = 10, W = 1000;int value[N], weight[N];int dp[W + 1];bool has[W + 1][N];int n,tot;int main(){scanf("%d%d",&n,&tot);for(int i=0;i<n;i++){scanf("%d%d",&value[i],&weight[i]);} memset(dp,0,sizeof(dp));memset(has,0,sizeof(has));//dp[0] = 0;for(int i=0;i<n;i++){for(int j=tot;j>=weight[i];j--){/*if(dp[j-weight[i]] >= 0)dp[j] = max(dp[j],dp[j-weight[i]] + value[i]); */if(dp[j] < dp[j-weight[i]] + value[i]){dp[j] = dp[j-weight[i]] + value[i];has[j][i] = true;}}}printf("%d\n",dp[tot]);for(int i=n-1;i>=0;i--){if(has[tot][i]){cout << value[i] << " " << weight[i] << endl;tot -= weight[i];}} return 0;}
0 0
- 【背包总结I】
- 递归-I-背包问题
- 【背包专题】I
- 背包总结
- 背包总结
- 背包总结
- 背包总结
- 背包总结
- I love sneakers! (分组背包)
- Java实现-背包问题I
- 背包(01背包、完全背包、多重背包)问题总结
- 背包问题总结(01背包、完全背包、多重背包)
- 01背包问题总结
- 背包问题求解总结
- 01背包问题总结
- 完全背包问题总结
- P01234背包个人总结
- 背包问题总结一
- AngularJs学习笔记__3、AngularJs模板
- centos 6实现ssh无密码登录的简便方法
- UITableView Cell
- 【C++】sizeof
- 黑马程序员——SQL四种连接查询及实例
- 【背包总结I】
- OpenGL像素缓冲对象(PBO)
- 【树结构】CodeForces 396C
- 8.3div
- 【背包总结-输出所有方案】
- 信号量、互斥体和自旋锁
- CSS+html:天涯网页仿照制作
- 递归算法实例
- 看书注意到的一个css选择器小知识点(积累)