实验五 箱子装载问题(分支限界法)
更新时间:2023-10-16 11:05:01 阅读量: 综合文库 文档下载
- 实验五推荐度:
- 相关推荐
实验五 箱子装载问题
一、实验目的:
1、 理解和复习所学各种算法的概念; 2、 掌握和复习所学各种算法的基本要素; 3、 掌握各种算法的优点和区别;
4、 通过应用范例掌握选择最佳算法的设计技巧与策略;
二、实验内容及要求:
1、使用贪心算法、回溯法、分支限界法解决箱子装载问题。(任选两种) 2、通过上机实验进行算法实现。
3、保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。
三、实验原理:
回溯法原理:
从开始结点出发,以深度优先方式搜索整个解空间。这个节点成为活结点,同时也成为当前的扩展节点。在当前的扩展节点处,搜索向纵深方向一致一个新节点。 贪心算法原理:
贪心算法通过一系列的选择来得到问题的解。他所做的每一个选择都是当前状态下局部
最好选择,即贪心选择。
四、程序代码:
贪心算法:
#include
using namespace std; int main(){
int t[N],w0[N],w[N],n,c,m,i,j;
int max=0,weight=0; bool tx[N];
cout<<\请输入轮船的载重量c:\ cin>>c;
cout<<\请输入可以装入的集装箱的数目n:\ cin>>n;
cout<<\请输入各集装箱的重量w[i](1<=i<=n):\ for(int i=0;i
tx[i+1]=false; }
for(i=1;i
w[j]=w[i];
w[i]=tem; } } }
for(i=1;i<=n;i++)printf(\ printf(\
for(i=1;i<=n;i++){
int min=weight+w[i]; if(min<=c){ weight+=w[i]; tx[i]=true; } }
m=i-1;
cout<<\最优装载情况为:\ cout<<\装入轮船的集装箱为:\ max=0;
for(i=1;i<=m;i++){
if(tx[i]){max+=w[i];cout< cout< cout<<\装入的集装箱的最大重量为:\ system(\ } 回溯法: #include class Loading { friend float MaxLoading(float[],float,int); public: void Backtrack(int i); int n; int *x,*bestx; float *w,c,cw,bestw,r; }; float Maxloading(float w1[],float c1,float c2,int n1,int bestx1[]) { Loading k; int j; float MAXLoad; k.x= new int [n1+1]; k.bestx=bestx1; k.w = w1; k.c = c1; k.n = n1; k.cw = 0; k.bestw = 0; k.r = 0; for(int i=1;i<=n1;i++) k.r+=w1[i]; k.Backtrack(1); delete [] k.x; cout<<\船1最优装载:\ MAXLoad=k.bestw; for( j=1;j<=n1;j++) { if(k.bestx[j]==0) { MAXLoad+=w1[j]; c2-=w1[j]; if(c2<0) { cout<<\找不到合理装载方案!\ return -1; } } } cout<<\船1中的箱子:\ for( j=1;j<=n1;j++) if(k.bestx[j]==1) cout< cout<<\船2中的箱子:\ for( j=1;j<=n1;j++) if(k.bestx[j]==0) cout< void Loading::Backtrack(int i) { if(i>n) { if(cw>bestw) { for(int j=1;j<=n;j++) bestx[j]=x[j]; bestw = cw; } return; } r-=w[i]; if(cw+w[i]<=c) { x[i]=1; cw+=w[i]; Backtrack(i+1); cw-=w[i]; } if(cw+r>bestw) { x[i] = 0; Backtrack(i+1); } r+=w[i]; } int main() { float w[20]; float c1,c2,k; int n,bestx[20]; cout<<\输入箱子数:\ cin>>n; cout<<\输入箱子重量:\ for(int i=1;i<=n;i++) cin>>w[i]; cout<<\输入容量船1,船2:\ cin>>c1>>c2; k=Maxloading(w,c1,c2,n,bestx); if(k!=-1)cout<<\总体最优装载:\ return 1; } 五、结果运行与分析: 贪心算法: 回溯法: 六、心得与体会: 通过本次实验,自己再次的联系了贪心算法和回溯法的应用,本次实验自己测试了很多次才成功,收获蛮大的,自己的编程能力进一步的提高了。
正在阅读:
实验五 箱子装载问题(分支限界法)10-16
实验四:数字调制仿真 - 图文12-03
平凡的世界读后感210-19
县旅发委民宿建设工作总结及下一年工作计划08-04
铜陵市旅游总体规划 - 图文10-28
电大《公共政策概论》期末复习题习题及解答04-16
吸、抵、撮、闭的口诀05-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 限界
- 装载
- 箱子
- 分支
- 实验
- 问题
- 园林树木学个人总结
- 代储代销供货方式对企业存货管理的影响
- 2006年4月自考网络操作系统试题加答案 - 图文
- 心理学各章习题
- 《物种起源》导言教案9
- 王桂英老师忏悔业障法
- 一端是柱一端是梁的这种梁为什么要指定铰接
- HSE安全履职通用参考试题
- 有色金属材料练习题
- 烟草调制与分级
- 杨郢乡中心小学对各村留守儿童之家建设和管理考核细则
- 广西农药批发行业企业名录2018版2029家 - 图文
- 中国古称谓
- 光电子技术(安毓英)习题答案
- 3202工作面瓦斯爆炸演习总结修改 - 图文
- 建筑室内电气施工管理要点
- 顶板现浇结构外观及尺寸偏差检验批质量验收记录表020105
- 企业安全生产会议记录新2016
- 切比雪夫不等式证明
- 青少年要有公民意识 - 初中政治第四册教案