动态规划学习(1)
来源:互联网 发布:触摸屏软件开发公司 编辑:程序博客网 时间:2024/06/15 06:12
(1)有n个重量和价值分为w(i),v(i)的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。
*限制条件:1<=n<=100
1<=w(i),v(i)<=100
1<=W<=10000
(2)时间复杂度:O(2^n);
(3)总结:下面代码为01背包中最朴素的方法复杂度为O(2^n),当n很大时此代码肯定不能通过。
(4)测试数据:Sample input:首行为物品的个数n和目标价值W,紧随其后有两行,第一行为物品的重量,第二行为其价值。
Sample output:输出挑选的价值总和的最大值。
4 5
2 1 3 2
3 2 4 2
(5)代码:
#include<iostream>using namespace std;const int MAX_N=1e2+6;int w[MAX_N],v[MAX_N],n,W;int rec(int i,int j){ int res; if(i==n)res=0; else if(j<w[i])res=rec(i+1,j); else res=max(rec(i+1,j),rec(i+1,j-w[i])+v[i]); return res;}int main(){ ios::sync_with_stdio(false);cin.tie(0); cin>>n>>W; for(int i=0;i<n;i++)cin>>w[i]; for(int i=0;i<n;i++)cin>>v[i]; cout<<rec(0,W)<<endl;}
阅读全文
0 0
- 动态规划学习(1)
- 小白学习动态规划(1)
- 动态规划学习之路(1)
- 动态规划(学习笔记)
- 动态规划学习(一)
- 动态规划学习(一)
- 动态规划学习(2)
- 动态规划(1)
- 动态规划(1)
- 动态规划(1)
- 动态规划(1)
- 动态规划(1)
- 算法学习(二):动态规划(DP)(1)
- 牛客网算法学习笔记-动态规划(1)
- 动态规划学习与实例(1)
- 动态规划学习(1)-数字三角形问题
- 算法学习笔记--动态规划(1)
- 动态规划算法学习(一)
- linux定时执行R脚本及注意事项
- Fiori2.0-如何把一个view以dialog的形式显示在界面
- [二分 单调队列] Atcoder AGC003 E. Sequential operations on Sequence
- dubbo监控报错
- 【安全牛学习笔记】vega
- 动态规划学习(1)
- JSP三大指令
- BCD码简介及其与十进制数字字符串之间的转换
- 滴滴首个开源项目 VirtualAPK 加载耦合插件首选
- 委托
- 对象池在怪物孵化器中的应用
- MySql命令行创建和删除触发器
- ######好#######输入DStreams和receivers
- Redis小记