练习题 No.5 背包问题(动态规划-记忆化搜索)
来源:互联网 发布:如何面试网络推广专员 编辑:程序博客网 时间:2024/05/17 08:51
要求
有n个背包和价值分为
限制条件
- (1 <= n <= 100)
- (1 <=
wi ,vi <= 100) - (1 <= W <= 10000)
输入格式
第一行输入n接下来n行的物品(w,v)最后输入一行w
输出格式
输出一行价值总和的最大值
测试输入
42 31 23 42 25
测试输出
7
解题思路
利用函数参数一定,返回值一定,剪枝掉重复运算的部分。
代码
#include<iostream>#include<cstring>#include<algorithm>using namespace std;int dp[1001][1001];int n;int w;pair<int, int> bag[1001];int rec(int i, int j) { int r; if (dp[i][j] >= 0) { return dp[i][j]; } if (i == n) { r = 0; } else if (j < bag[i].first) { r = rec(i + 1, j); } else { r = max(rec(i + 1, j), rec(i + 1, j - bag[i].first) + bag[i].second); } dp[i][j] = r; return r;} int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> bag[i].first >> bag[i].second; } cin >> w; memset(dp, -1, sizeof(dp)); cout << rec(0, w); return 0;}
0 0
- 练习题 No.5 背包问题(动态规划-记忆化搜索)
- 动态规划---01背包与记忆化搜索
- 动态规划---01背包与记忆化搜索
- 动态规划-记忆化搜索
- 动态规划6-背包问题+记忆递归
- 动态规划6-背包问题+记忆递归
- 硬币问题之记忆化搜索-动态规划 By ACReaper
- poj1088滑雪,记忆搜索,动态规划问题
- poj 1088 记忆化搜索||动态规划
- 动态规划和记忆化搜索
- 记忆化搜索算法之动态规划
- poj 1088+动态规划+记忆化搜索
- EOJ 1823 【动态规划】 【记忆化搜索】
- 动态规划_记忆化搜索
- 动态规划_记忆化搜索
- POJ088滑雪(记忆化搜索|动态规划)
- 动态规划(记忆化搜索)
- hdu1501 zipper【记忆化搜索】【动态规划】
- matlab数字图像/视频处理技术基础 第二篇
- matlab-VC混合编程之matlab低版本,VS高版本,mex -setup,mbuild -setup都找不到VS2010的编
- 电赛备战1:时频测量
- ORACLE 11G rman恢复数据库实战纪实
- Trie(字典树模板)
- 练习题 No.5 背包问题(动态规划-记忆化搜索)
- 博客网站(1)-基本认识与博客项目的创建
- java——方法
- tomcat和JDK环境变量配置
- Maximum Subarray
- Two Sum
- 头疼的算法与数据结构——双向循环链表
- leetcode258 Add Digits java
- C#多线程