博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0-1背包
阅读量:3960 次
发布时间:2019-05-24

本文共 905 字,大约阅读时间需要 3 分钟。

给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。

输入格式:

共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。

输出格式:

输出装入背包中物品的最大总价值。

输入样例:

在这里给出一组输入。例如:

5 10

2 6
2 3
6 5
5 4
4 6
输出样例:
在这里给出相应的输出。例如:

15

#include
#include
#include
using namespace std;int dp[1001][1001]={
0};int main(){
int n,c; memset(dp,0,sizeof(dp)); cin>>n; cin>>c; int *v=new int[n+1]; int *w=new int[n+1]; for(int i=1;i<=n;i++) cin>>w[i]>>v[i]; int maxnum=0; for(int i=1;i<=n;i++) for(int j=0;j<=c;j++) {
dp[i][j] = dp[i-1][j]; if(j>=w[i]) {
dp[i][j] = max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]); if(dp[i][j]>maxnum)maxnum = dp[i][j]; } } cout<
<

转载地址:http://pyezi.baihongyu.com/

你可能感兴趣的文章
求解方程
查看>>
太弱了。。水题
查看>>
位运算(含应用)
查看>>
野指针与空指针
查看>>
图文混排效果
查看>>
urllib2.urlopen超时问题
查看>>
魏兴国:深入浅出DDoS攻击防御
查看>>
使连续的参考文献能够中间用破折号连起来
查看>>
Discover Feature Engineering, How to Engineer Features and How to Get Good at It
查看>>
36辆车,6条跑道,无计时器,最少几次比赛可以选出前三
查看>>
matlab2012b与matlab7.1执行set(gca,'Yscale','log')之后画到的直方图结果居然不同
查看>>
回文题
查看>>
AJAX应用之注册用户即时检测
查看>>
File 类小结
查看>>
java除去字符串空格
查看>>
jsp 2.0标记文件
查看>>
Hibernate中Criteria的完整用法
查看>>
sql jsp
查看>>
spring beans beanfactory applicationcontext
查看>>
使用ORM工具进行数据访问
查看>>