箱子装载问题.doc

上传人:豆**** 文档编号:24046561 上传时间:2022-07-03 格式:DOC 页数:5 大小:127.50KB
返回 下载 相关 举报
箱子装载问题.doc_第1页
第1页 / 共5页
箱子装载问题.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《箱子装载问题.doc》由会员分享,可在线阅读,更多相关《箱子装载问题.doc(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流箱子装载问题.精品文档.实验五 箱子装载问题一、实验目的1、 理解和复习所学各种算法的概念;2、 掌握和复习所学各种算法的基本要素;3、 掌握各种算法的优点和区别;4、 通过应用范例掌握选择最佳算法的设计技巧与策略;二、实验内容及要求1、使用贪心算法、回溯法、分支限界法解决箱子装载问题。(任选两种)2、通过上机实验进行算法实现。 3、保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。三、实验原理回溯法原理:从开始结点出发,以深度优先方式搜索整个解空间。这个节点成为活结点,同时也成为当前的扩展节点。在当前的扩展节点处,搜索向纵深方向

2、一致一个新节点。贪心算法原理:贪心算法通过一系列的选择来得到问题的解。他所做的每一个选择都是当前状态下局部最好选择,即贪心选择。四、程序代码(1)贪心算法#include#includevoid swap(int &x, int &y)/交换 int t;t = x;x = y;y = t;void sort(int w, int t, int n)/排序,有小到大 for (int m = 0; m0)lastExchangeIndex = 0;for (j = 0; ji; j+)if (wj + 1wj)swap(wj + 1, wj);/物品的重量交换lastExchangeIndex

3、 = j;swap(tj, tj + 1);i = lastExchangeIndex;void loading(int x, int w, int c, int n, int *t)/最有装载sort(w, t, n);for (int i = 0; in; i+)xi = 0;for (int j = 0; jn&wtj = c; j+)xtj = 1;c -= wtj;/装入 int mian()int n, c;printf(请输入物品个数:);scanf(%d, &n);printf(请输入最大容量:);scanf(%d, &c);int x200;/存储物品编号 int w200;

4、/存储每个物品重量for (int i = 0; in; i+)printf(请输入第%d个物品重量:, i);scanf(%d, &wi);int *t = new intn;/物品是否装入for (int j = 0; jn; j+)xj = 0;/初始化物品均未装入loading(x, w, c, n, t);printf(装入物品编号为:);for (int k = 0; kn; k+)if (xk = 1)printf(%d , tk);return 0;(2)回溯法#include#include#define num 100int bestxnum = 0 ;/存放最优解int

5、wnum;/集装箱重量int xnum;/解int bestw = 0;/最优装船重量int cw = 0;/当前已装船重量int n;/集装箱个数int c1;/第一船的重量int c2;/第二船的重量/限界函数 int bound(int t)/ 选择当前节点又分支的剩余集装箱重之和int rw = 0;for (int i = t + 1; tn)/到底叶子节点,求得一个可行解if (cwbestw)/当前解比以前解更优 bestw = cw;for (i = 1; i = n; i+)bestxi = xi;return;elseif (cw + wtbestw)/右分支满足限界条件l

6、oadingRec(t + 1);int main()n = 4;/集装箱个数w1 = 4, w2 = 5, w3 = 3, w4 = 2;/集装箱重量c1 = 8;/第一个船重量c2 = 7;/第二个船重量cw = 0;bestw = 0;loadingRec(1);/从第一个集装箱开始装箱printf(第一船的最优装载量为:%dn, bestw);printf(第一船的最优解为);for (int i = 1; i = n; i+)printf(%d , bestxi);/求剩余集装箱的重量int cw2 = 0;for (int i = 0; i c2)printf(无法将剩余集装箱转入第二船,问题无解);elseprintf(可以将剩余集装箱装入第二船,问题有解);getchar();五、结果运行与分析(1)贪心算法贪心算法并没有求得最优解。(2)回溯法六、 心得与体会这次实验可以看做是对前几次实验的回顾,使用的算法是相同的,只是解决的问题改变了,只要对算法理解,解决起来这些问题就会得心应手。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com