动态规划学习(2)
来源:互联网 发布:2016年双11数据分析 编辑:程序博客网 时间:2024/06/05 11:13
(1)题目:有n个重量和价值分为w(i),v(i)的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。
*限制条件:
1<=n<=100
1<=w(i),v(i)<=100
1<=W<=10000
(2)时间复杂度:O(W*n);
(3)总结:下面代码为01背包中经过优化后的方法。时间复杂度为O(W*n)。
(4)测试数据:Sample input:首行为物品的个数n和目标价值W,紧随其后有两行,第一行为物品的重量,第二行为其价值。
Sample output:输出挑选的价值总和的最大值。
4 5
2 1 3 2
3 2 4 2
(5)代码:
#include<iostream>#include<cstring> #include<algorithm>using namespace std;const int MAX_N=1e2+6;int n,W;int w[MAX_N],v[MAX_N],dp[MAX_N][MAX_N];int rec(int i,int j){ if(dp[i][j]>=0)return dp[i][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 dp[i][j]=res;}int main(){ ios::sync_with_stdio(false);cin.tie(0); cin>>n; for(int i=0;i<n;i++)cin>>w[i]>>v[i]; cin>>W; memset(dp,-1,sizeof(dp)); cout<<rec(0,W);}
阅读全文
0 0
- 动态规划学习(2)
- 算法学习(2):动态规划
- 动态规划(学习笔记)
- 动态规划学习(一)
- 动态规划学习(一)
- 动态规划学习(1)
- 动态规划(2)
- 动态规划(2)
- 动态规划(2)
- 动态规划(2)
- 动态规划(2)
- 动态规划学习笔记2(最长公共子序列)
- 牛客网算法学习笔记-动态规划(2)
- 动态规划2_入门学习
- 动态规划学习之路(2)
- 动态规划算法学习(一)
- 动态规划的学习(一)
- 动态规划(算法导论学习笔记)
- Java虚拟机学习笔记整理
- mysql--查询缓存
- 对Hibernate框架的查询进行优化
- Tensorflow之TensorBoard的使用
- spark编程模型与基本架构图
- 动态规划学习(2)
- CSS(十二)
- 生活小记64
- Unity与C#的序列化与反序列化
- 在android studio里怎找到代码相对应的文件
- 虚拟机网络配置笔记===收集资料
- CSS(十三)
- spring mvc+ajax返回json字符串的方式
- CSS(十四)