博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0-1背包问题详解一
阅读量:5312 次
发布时间:2019-06-14

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

问题描述:

          给定n种物品和一个背包。物品i的重量是w(i),其价值为v(i),背包的容量为c(即最多能够装c重量的物品)。

给定样例:

        输入n=5,c=6.物品容量和价值分别为:

                  2   6

                  2   3

                  6    5

                   5   4

                   4    6

最后输出时:12

解法:

           一般动态规划的解法都会有公式:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}.

             该公式也可以转换为f[v]=max{f[v],f[v-c[i]]+w[i]}

             具体解释在这里就不阐述了,可以参照文献

1 void knapsack(){ 2     int c,n; 3     cout<<"请输入最大容量,小于100"<
>c; 5 cout<<"请输入背包个数"<
>n; 7 cout<<"请输入各个背包重量和价值"<
>w[i]>>v[i];10 }11 for(int i=0;i<=n;i++)12 p[i]=0;13 for(int i=1;i<=n;i++)14 for(int j=c;j>=w[i];j--)15 p[j]=max(p[j],p[j-w[i]]+v[i]);16 cout<<"结果是"<
<
View Code

 

转载于:https://www.cnblogs.com/xiaoyi115/p/3178706.html

你可能感兴趣的文章
jenkins 批量修改svn 地址
查看>>
Spring presentation (1)
查看>>
运行Python脚本的方法
查看>>
ES 04 - 安装Kibana插件(6.6.0版本)
查看>>
jquery mousewheel
查看>>
linux 无线指示灯闪
查看>>
StringBuffer的用法
查看>>
c语言NULL和0区别及NULL详解
查看>>
C# 多态的实现
查看>>
大连acm hdu 5876 补图
查看>>
爬楼梯问题和Fibonacci数
查看>>
Java控制图片按比例缩放- (注意内存释放)
查看>>
笔记之_java整理kindeditor文件上传插件
查看>>
PHP填补数字前后的0
查看>>
自然语言交流系统 phxnet团队 创新实训 个人博客 (二)
查看>>
Cannot find an exact (case-sensitive) match for 'crtbp.m
查看>>
二进制方式部署Kubernetes 1.6.0集群(开启TLS)
查看>>
java.sql.SQLException: Prepared or callable statement has more than 2000 parameter markers及解决方案...
查看>>
docker存储结构解析
查看>>
Python中的位运算
查看>>