EnQueue(sq,t); //空标志进队列 while (!QueueEmpty(sq)) { }
printf(\最优取法为:\\n\
for( int j=n-1;j>0;j--) //构造最优解 { }
for(int k=1;k<=n;k++)
第 页 共 页
wt=ew+w[i]; vt=ev+v[i]; if (wt <= c) {
if(vt>bestv)
bestv=vt;
EnQueue1(wt,vt,i,e,true); // 左儿子结点进队列
}
EnQueue1(ew,ev,i,e,false); //右儿子总是可行; e=DeQueue(sq); // 取下一扩展结点 if (e == NULL) { }
ew=e->weight; //更新当前扩展结点的值 ev=e->value;
if (QueueEmpty(sq)) break;
EnQueue(sq,NULL); // 同层结点尾部标志 e=DeQueue(sq); // 取下一扩展结点 i++;
bestx[j]=(bestE->leftChild?1:0); bestE=bestE->parent;
{ }
printf(\
printf(\最优价值为:%.1f\\n\\n\
if(bestx[k]==1)
printf(\物品%d:重量:%.1f,价值:%.1f\\n\
}
void main() { }
int c;
float ewv[MaxSize];
printf(\ //////////////////// 0-1背包问题分枝限界法 /////////////////////\\n\\n\printf(\请输入物品的数量:\\n\scanf(\
printf(\请输入背包的最大承重量:\\n\scanf(\
printf(\请输入物品的重量和单位重量价值:\\n\\n\for(int i=1;i<=n;i++) { }
maxLoading(w, v, c);
printf(\物品%d:\
scanf(\v[i]=w[i]*ewv[i]; printf(\
分支限界法测试结果:
第 页 共 页
五、小结(包括收获、心得体会、存在的问题及解决问题的方法、建议等)
注:内容一律使用宋体五号字,单倍行间距,不得少于100字。
1 通过这次试验是我对数据结构有了进一步的了解,可以通过算法解决实际问题(背包问题)。
2在用分支限界法实现问题时遇到了有关队列的问题,通过上网搜索,问老师得以解决。
3在老师有计划的指导安排下,我的编程能力突飞猛进,在此,对老师深表感谢!!
第 页 共 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库分别用回溯法和分支限界法求解0-1背包问题(2)在线全文阅读。
相关推荐: