- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
实验八 回溯算法(4学时)
一、实验目的与要求
1、掌握装载问题的回溯算法;
2、初步掌握回溯算法;二、实验题
有一批共n个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i的重量为wi,
且?n
w?c?c
i 1 2
装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2
艘轮i?1船。如果有,找出一种装载方案。
三、实验提示装载问题
?问题描述
有一批共n个集装箱要装上2艘载重量分别为c和c的轮船,其中集装箱i的重量为w ,
1 2 i
且,要求确定是否有一个合理的装载方案可将这n个集装箱装上这2艘轮船。如果有,请
给出该方案。
?编程任务
利用回溯法试设计一个算法求出该装载问题的解。
?数据输入
由文件input.txt提供输入数据。文件的第1行中有2个正整数n及c,表示有n个集装箱,第一艘船的载重量为c。接下来的一行为每个集装箱的重量。
?结果输出
程序运行结束时,将计算出的最优解输出到文件output.txt中,如果某集装箱被装入船上,则对应的解为1,如果不能装入则为0。
输入文件示例 输出文件示例
input.txt output.txt
330 011
161515
代码:#includestdio.h#includestdlib.h#includefstream.hintresult;
intnn,cc;
int*ww,*superbestx,*superbestw;templateclassType
classLoading
{
friendTypeMaxloading(Type[],Type,int,int[]);public:
voidBacktrack(inti);intn,////集装箱数
*x,//当前解
*bestx;//当前最优解
Type*w,//集装箱重量数组c,//第一艘轮船的载重量cw,//当前载重量
bestw,//当前最优载重量r;//剩余集装箱重量
};
templateclassType
voidLoadingType::Backtrack(inti)
{//搜索第i层结点
if(in)
{////到达叶结点if(cwbestw)
{
for(intj=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+rbestw)//
{
x[i]=0;
Backtrack(i+1);
}
r+=w[i];
}
templateclassType
TypeMaxloading(Typew[],Typec,intn,intbestx[])
{//返回最优载重量LoadingTypeX;
//
X.x=newint[n+1];
X.w=w;
X.c=c;
X.n=n;
X.bestx=bestx;
X.bestw=0;
X.cw=0;
//
X.r=0;
for(inti=1;i=n;i++)
X.r+=w[i];//初始时r为全体物品的重量和
//计算最优载重量X.Backtrack(1);delete[]X.x;
for(intk=0;kn;k++)superbestx[k]=X.bestx[k];
result=X.bestw;
//delete[]X.x;returnresult;
}
intmain(intargc,int*argv)
{
//LoadingintX;
ifstreamin(input.txt);//打开输入文件ofstreamout(output.txt);//打开输出文件
innn;//集装箱数
incc;//第一艘轮船的载重量ww=(int*)malloc(sizeof(int)*nn);
superbestx=(int*)malloc(sizeof(int)*nn);
//superbestw=(int*)malloc(sizeof(int)*nn);for(inti=0;inn;i++)
{
inww[i];//集装箱重量数组superbestx[i]=0;//初始当前化最优解
}
Maxloading(ww,cc,nn,superbestx);for(intkk=0;kknn;kk++)
outsuperbestx[kk
您可能关注的文档
- 时态练习题分析和总结.docx
- 时态语态语法.docx
- 时序电路设计.docx
- 时延测试分析和总结.docx
- 时装画大纲分析和总结.docx
- 识 字 1教案分析和总结.docx
- 识时务者为俊杰作文.docx
- 识字 1分析和总结.docx
- 识字 3分析和总结.docx
- 识字 4分析和总结.docx
- 广东省东莞市2024-2025学年八年级上学期生物期中试题(解析版).pdf
- 非遗剪纸文创产品开发经理岗位招聘考试试卷及答案.doc
- 广东省东莞市2024-2025学年高二上学期期末教学质量检查数学试题.pdf
- 体育安全理论课件图片素材.ppt
- 3.1 公民基本权利 课件-2025-2026学年道德与法治八年级下册 统编版 .pptx
- 广东省潮州市湘桥区城南实验中学等校2024-2025学年八年级上学期期中地理试题(解析版).pdf
- 大数据运维工程师岗位招聘考试试卷及答案.doc
- 广东省深圳市福田区八校2026届数学八年级第一学期期末教学质量检测模拟试题含解析.doc
- 广东省潮州市湘桥区城基初级中学2024-2025学年八年级上学期11月期中考试数学试题(解析版).pdf
- 广东省潮州市湘桥区城西中学2024-2025学年八年级上学期期中地理试题(解析版).pdf
最近下载
- 基于Comsol+Multiphysic的含瓦斯煤岩流固耦合模型与数值模拟研究.docx VIP
- 机电安装标准模块做法解析.pdf VIP
- 醇基燃料安全技术说明书.docx VIP
- 湖北省武汉市武昌区2023-2024学年四年级上学期期末质量监测语文试卷.docx VIP
- 矿井工作面通风设计浅谈(采矿张瑞功).doc VIP
- PW1555-2.0数据手册下载.pdf VIP
- 高中数学 北师大版必修二 三角恒等变换 第七课时 二倍角的三角函数公式 二倍角公式 教学设计.docx VIP
- TDLAS技术在硫磺回收装置中的应用.pdf
- 一种淤浆法生产高黏CMC的制备工艺.pdf VIP
- 初中语文语文版所有古诗.doc VIP
原创力文档


文档评论(0)