0-1背包问题
来源:互联网 发布:怎么学粤语 知乎 编辑:程序博客网 时间:2024/05/16 11:50
0-1背包问题
给定n种物品和一个背包。物品i的重量是wi,价值是vi,背包的容量为c。问应如何选择装入背包的物品,使装入背包中物品的总价值最大?
解:
01背包:
使用dp[j]数组存放在只有j空间的包的价值。
从第一个物品开始遍历,空间从允许最大值c开始到w[i]截止
保证包中空间能够放置第i个物品
此时包中空间足够放置物品i,但是物品i可以放也可以不放
当放进包中时:dp[j]=dp[j-w[i]]+v[i];当前空间减去物品i占用空间之后空间所能放置物品的最大价值加物品i价值
当不放进包中:dp[j]=dp[j];
#include <stdio.h>#include <string.h>#define N 1000 int dp[N];int main(){int n,c;int w[N],v[N]; while(~scanf("%d%d",&n,&c)){memset(dp,0,sizeof(dp));for(int i=0;i<n;i++){scanf("%d",&w[i]);}for(int i=0;i<n;i++){scanf("%d",&v[i]);}for(int i=0;i<n;i++){for(int j=c;j>=w[i];j--){if(dp[j]<dp[j-w[i]]+v[i])dp[j]=dp[j-w[i]]+v[i];}}printf("%d\n",dp[c]);}}
0 0
- 背包问题(0-1背包、完全背包、多重背包)详解
- 背包问题和0-1背包问题
- 背包问题和0-1背包问题
- 背包问题系列--"0-1背包问题"
- 背包笔记-含0/1背包问题、完全背包问题、多重背包问题、二维背包问题、分组背包问题
- 【背包问题】背包问题之0-1背包、完全背包、多重背包
- 0-1背包问题
- 0/1背包问题
- 0,1背包问题
- 0-1背包问题
- 0/1背包问题
- 0-1背包问题
- // 0-1背包问题
- 0/1背包问题
- 0-1背包问题
- 0-1背包问题
- 0-1背包问题
- 0/1背包问题
- 对偶空间(dual linear space)
- Sqlite中hash表解析
- 当你编码时你在做什么:谈编程的本质(零)
- Android Studio 打印技巧
- BZOJ2879: [Noi2012]美食节
- 0-1背包问题
- OkHttp大文件下载
- WPS文献自动索引
- 怎样从外网访问内网服务器
- Java:fail-safe 机制
- 387. First Unique Character in a String#2(Done)
- hadoop框架下各类软件介绍
- RecyclerView详解
- 为caffe添加新的层