分支限界法-01背包问题
用分支限界法解决0-1背包问题
#include<iostream>
#include<stack>
#define N 200
using namespace std;
class HeapNode
{
public:
double uprofit,profit,weight;
int level,x[N];
};
stack<HeapNode> H;
double w[N],p[N];
double cw,cp,c;
int n;
double Bound(int i)
{
double cleft=c-cw,b=cp;
while(i<=n&&w[i]<=cleft)
{
cleft-=w[i];
b+=p[i];
i++;
}
if(i<=n) b+=p[i]/w[i]*cleft;
return b;
}
void AddLiveNode(double up,double cp,double cw,bool ch,int level)
{
HeapNode nod;
nod.uprofit=up;
nod.profit=cp;
nod.weight=cw;
nod.level=level;
if(level<=n) H.push(nod);
}
double Knap()
{
int i=1;
cw=cp=0;
double bestp=0,up=Bound(1);
while(1)
{cout<<"down: "<<bestp<<endl<<"up: "<<up<<endl;
double wt=cw+w[i];
if(wt<=c)
{
if(cp+p[i]>bestp) bestp=cp+p[i];
AddLiveNode(up,cp+p[i],cw+w[i],true,i+1);
}
up=Bound(i+1);
if(up>=bestp)//符合下界限制的点
AddLiveNode(up,cp,cw,false,i+1);
if(H.empty()) return bestp;
HeapNode node=H.top();
H.pop();
cw=node.weight;
cp=node.profit;
up=node.uprofit;
i=node.level;
}
}
int main()
{
cout<<"请输入n和c:"; cin>>n>>c;
cout<<"请输入w[i]"<<endl;
for(int i=1;i<=n;i++) cin>>w[i];
cout<<"请输
入p[i]"<<endl;
for(int i=1;i<=n;i++) cin>>p[i];
cout<<"最优值是:"<<Knap()<<endl;
return 0;
}
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




