01背包问题
来源:互联网 发布:网站域名交易流程 编辑:程序博客网 时间:2024/06/06 03:03
1、回溯法解决
// 针对N叉树的递归回溯方法
void backtrack (int t)
{
if (t > n) {
// 到达叶子结点,将结果输出
output (x);
}
else {
// 遍历结点t的所有子结点
for (int i = f(n,t); i <= g(n,t); i ++ ) {
x[t] = h[i];
// 如果不满足剪枝条件,则继续遍历
if (constraint (t) && bound (t))
backtrack (t + 1);
}
}
}
代码:#include<iostream>using namespace std;const int N=4;int c=8; int v[]={0,2,1,4,3},w[]={0,1,4,2,3};//下标从1开始 int x[N+1]; int best[N+1];int cw=0;int cv=0;int max_v=0;//最大价值void find(int t){if(t>N){if(max_v<=cv){max_v=cv;for(int i=0;i<=N+1;i++)best[i]=x[i];}return ;}//if(cw+w[t]>c)//超重//return;if(cw+w[t]<=c)//左子树{//放x[t]=1;cw=cw+w[t];cv=cv+v[t];find(t+1);//还原x[t]=0;cw-=w[t];cv-=v[t];}//右子树find(t+1);}void main(){find(1);for(int i=0;i<=N+1;i++){if(best[i]==1)cout<<i<<endl;}cout<<endl;cout<<"max_v="<<max_v<<endl;}
0 0
- 背包问题---01背包
- DP 背包问题 01背包
- 01背包--苹果,背包问题
- 01背包 完全背包问题
- 背包问题之01背包
- 背包问题之01背包
- 背包问题1:01背包
- 背包问题《1》01背包
- 01背包+完全背包问题
- 背包问题-背包01-苹果
- 背包问题之01背包
- 背包问题(01背包,完全背包,多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 动态规划-----背包问题-----01背包,完全背包,多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 背包(01背包、完全背包、多重背包)问题总结
- 背包问题(01背包,完全背包,多重背包)
- 经典背包问题 01背包+完全背包+多重背包
- 函数的递归
- const 二级指针:invalid conversion from 'char**' to 'const char**'
- 聪明的kk
- Linux串口编程
- ubuntu12.04 安装qt5
- 01背包问题
- poj1190 生日蛋糕 搜索+剪枝
- Linux 指定运行时动态库路径(转)
- 电脑或者笔记本卡的处理方法
- Github新手入门,简单使用方法!
- MTK6573代码目录结构?
- 实战Andriod开发环境部署[多图]
- 电脑没声音怎么回事,电脑没有声音解决
- poj 2918