实验六 回溯算法

上传人:d**** 文档编号:172700316 上传时间:2022-12-06 格式:DOCX 页数:5 大小:29.47KB
收藏 版权申诉 举报 下载
实验六 回溯算法_第1页
第1页 / 共5页
实验六 回溯算法_第2页
第2页 / 共5页
实验六 回溯算法_第3页
第3页 / 共5页
资源描述:

《实验六 回溯算法》由会员分享,可在线阅读,更多相关《实验六 回溯算法(5页珍藏版)》请在装配图网上搜索。

1、实验六 回溯算法(2 学时)一、实验目的与要求1、掌握装载问题的回溯算法;2、初步掌握回溯算法;二、实验题有一批共n个集装箱要装上2艘载重量分别为cl和c2的轮船,其中集装箱i的重量为 wi,且装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2艘轮船。如果 有,找出一种装载方案三、实验提示void backtrack (int i)搜索第i层结点if (i n) /到达叶结点更新最优解 bestx,bestw;return;r -= wi;if (cw + wi bestw) xi = 0; / 搜索右子树 backtrack(i + l);r += wi;四、程序代码解题思路:(

2、1) 首先将第一艘轮船尽可能装满。(2) 然后将剩余的集装箱装上第二艘轮船。 将第一艘轮船尽可能装满等价于选取全体集装箱的一个子集,使该子集中集装箱重量之和最接近 cl。class teststatic int n;static int weight;static static static static staticint limitWeight; int currentweight; int bestWeight; int remainWeight; int x;最小最优载重星当前载重星当前最优载重星剩余载重星static int bestz;public static int maxLo

3、ading(int weightArray, int clWeight, out int _x)n = weightArray.Length - 1: weight = weightArray; limitWeight = clWeight; currentweight = 0: bestWeight = 0;x = new intn + 1;= new intn + 1;bestx = _x:foreach (int elem in weight) remainWeight 十=elm;backtrack(0): wturn bestWeight;private static void ba

4、cktraLck(iirt i)if (i n)i (currentWeight bestWeight)x. Copy To (bes tz, 0):bestWeight = currentWeight;ret urn;remainWeight -= weighti;if (currentWeight + weighti best Weight) xi = 0;back track (i + 1);remainWeight 4= weight i;class Programstatic void Main(string args)int w= new int 10, 25, 35, 45, 5

5、5, 65, 75, 95, 105, 150 ;int cl = 600 :AZ假设cl的重里药6DDint c2 = 300; 假设c2的重 1.5600int x;int bestel = test.maxLoading(w, cl, out x);int weight = 0;foreach (int elem in w)weight += elem;if (c2 weight - bestcl)Console.WriteLine(无解。;|return;Console. WriteLine (cl可装载0 , bestcl);Console. WriteLine (cl包含集装箱:”

6、);for (int i = 0; i x Length; i+) if (xi = 1)Console. Write 0 ”,i + 1);Console VfriteLine ();Console VfriteLine ();Console. WriteLine (c2可装载0, weight - bestcl);Console. WriteLine (c2包含集装箱:”);for (int i = 0; i x Length; i+)if (xi = 0)Console. Write 0 ”,i + 1);Console VfriteLine ();Console Read();五、实验结果六、实验总结装载问题属于多选择问题,符合回溯法的特点。通过本次集装箱问题实验,我学会了如 何使用回溯算法解决实际问题,并初步掌握装载问题的回溯算法,了解了回溯法的基本思想 和解题思路。实验后,我会继续学习,理解回溯算法思想,做到可以独立利用回溯法解决问 题。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!