简单的动态规划——装箱问题
来源:互联网 发布:淘宝标题关键词重复 编辑:程序博客网 时间:2024/06/05 07:44
装箱问题
告诉你箱子的容积为多少,告诉你有N件物品和每一件物品的体积,问如何选择物品才能令箱子的剩余容积最小。
搜索递归
#include<bits/stdc++.h>using namespace std;int p;int v[40];int n;int dp(int i,int j){ int ans=j; if(i==0) {ans=j;return ans;} else if(ans<v[i]) ans=dp(i-1,ans); else ans=min(dp(i-1,ans),dp(i-1,ans-v[i]));return ans;}int main(){ scanf("%d",&p); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&v[i]); cout<<dp(n,p)<<endl;}
记忆化搜索
#include<bits/stdc++.h>using namespace std;int p;int v[40];int n;int dp[35][20004];int rec(int i,int j){ if(dp[i][j]>=0) return dp[i][j]; int ans=j; if(i==0) {return j;} else if(ans<v[i]) ans=rec(i-1,ans); else ans=min(rec(i-1,ans),rec(i-1,ans-v[i]));return dp[i][j]=ans;}int main(){ scanf("%d",&p); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&v[i]); memset(dp,-1,sizeof(dp)); cout<<rec(n,p)<<endl;}
动态规划
#include<bits/stdc++.h>using namespace std;int p;int v[40];int n;int dp[20003]={0};int rec( ){for(int i=1;i<=n;i++) for(int j=p;j>=v[i];j--) dp[j]=max(dp[j],dp[j-v[i]]+v[i]);return p-dp[p];}int main(){ scanf("%d",&p); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&v[i]); cout<<rec()<<endl;}
阅读全文
0 0
- 简单的动态规划——装箱问题
- 动态规划装箱问题
- 装箱问题---动态规划
- 动态规划——背包系列之装箱问题
- 【动态规划】【RQNOJ】装箱问题
- 【动态规划入门】装箱问题
- 【初学动态规划】之装箱问题
- 背包型动态规划1014装箱问题
- |Tyvj|动态规划|P1016 装箱问题
- 背包型动态规划 装箱问题
- 蓝桥杯-装箱问题-动态规划-java
- 算法训练 装箱问题 递归动态规划
- 简单的动态规划问题(帮助理解动态规划)
- 简单动态规划问题
- 【动态规划】玩具装箱
- 一个简单的动态规划问题
- Alphacode 简单的动态规划问题。
- 装箱问题的简单实现
- js 将数字格式化成货币(钱)格式
- MapReduce原理及性能调优
- ARC068E
- VMware虚拟机设置centos固定ip地址
- Window下查看dll, lib文件是32位还是64位
- 简单的动态规划——装箱问题
- 调试工具:OzCode
- 为xgboost搭建环境,升级glibc,gcc,和解决升级glibc之后的中文乱码问题
- JSON解析,null变成了"null"
- python学习总结---列表、元组、字符串、字典中一些常用函数
- json转对象数组
- 给Android标题栏加上返回按钮
- 收入
- 非web java项目部署到linux总结(非打包成jar,配置文件可以随时修改)