- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
.
实验六? 回溯算法(2学时)
?
一、实验目的与要求
1、掌握装载问题的回溯算法;
2、初步掌握回溯算法;
二、实验题
有一批共n个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i的重量为wi,且 装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2艘轮船。如果有,找出一种装载方案。
三、实验提示
void backtrack (int i)
{// 搜索第i层结点
if (i n) // 到达叶结点
更新最优解bestx,bestw;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];
}
实验代码
方法1:
import java.util.*;
/**
* 回溯法解决装载问题
* @author Administrator
*
*/
public class demo {
public static int n; //集装箱数
public static int first_weight; //第一艘载重量
public static int beautif_weight; //当前最优载重量
public static int[] arr_weight; //集装箱重量数组
public static int[] xx; //
public static int[] bestxx;
public static int maxLoadingRE(int[] w, int c, int[] bestx) { //递归回溯
n = w.length;
first_weight = c;
beautif_weight = 0;
arr_weight = w;
bestxx = bestx;
xx = new int[n];
int r = 0; //剩余集装箱重量,未进行装载的重量
for (int i = 0; i n; i++) {
r += arr_weight[i];
}
trackback(0, 0, r);
return beautif_weight;
}
//到达层数,目前装载的重量,未装载的重量
private static void trackback(int i, int cw, int r) {
if (i == n) {//到达叶结点
for (int j = 0; j n; j++) {
bestxx[j] = xx[j];
}
beautif_weight = cw;
return; //只是一次出栈操作,栈非空还要继续执行
}
if (cw + arr_weight[i] = first_weight) { //已装载的加上要装载的小于第一个的载重量
xx[i] = 0; //0代表装在第一个上,1代表装在第二个上
trackback(i + 1, cw + arr_weight[i], r); //试图装载下一个集装箱,r是针对第一个装的重量,因此装在第一个里不需要减,但装在第二个时就要减去该重量
}
if (r - arr_weight[i] beautif_weight) { //已装载的加上要装载的已经大于第一个的载重量,并且用总的载重量r减去当前要装载的还比最好的载重量大
xx[i] = 1; //放到第二个上
trackback(i + 1, cw, r - arr_weight[i]);
}
}
public static int maxLoading(int[] w, int c, int[] bestx) {
int i = 0; //当前层
int n = w.length; //层总数
int[] x = new int[n]; //x[0, i]为当前选择路径
Arrays.fill(x, -1); //初始化为-1,0表示选择第一个,1表示选择第二
您可能关注的文档
- 合并同类项与去添括号法则.doc
- 名人故居布展设计说明.doc
- 商业地产运营模式及法律风险防范.doc
- 嘉华电子监管.doc
- 四年级画垂线和平行线练习题XX4.doc
- 四等水准测量实验报告.doc
- 四种抠图方法.doc
- 四边形的认识教学设计(要).doc
- 因数和倍数公开课教学设计.doc
- 团结友爱班会资料(诗歌,名句附带资料很全).doc
- 化妆品公司动力部年度总结.pptx
- 七年级下册(2024)第六单元课外古诗诵读之《约客》课件(共26张PPT).pptx
- 24《寓言四则》优质课教学课件(共15张PPT).ppt
- 七年级下册(2024)第六单元课外古诗诵读之《竹里馆》课件(共26张PPT).pptx
- LIMS供应商概览与技术标书.pdf
- 线缆厂薪酬核算管理规章.doc
- 《课外古诗词诵读——逢入京使 》课件(共22张PPT)2025—2026学年统编版语文七年级下册.pptx
- 《课外古诗词诵读——贾生》课件(共22张PPT)2025—2026学年统编版语文七年级下册.pptx
- 7 谁是最可爱的人 课件 (共20张PPT) 2025-2026学年统编版语文七年级下册.pptx
- 电池厂叠片机配件管理规范规章.doc
最近下载
- 中国空调设备行业市场深度研究及发展趋势预测报告.docx
- 砖胎模监理细则.docx VIP
- 2025年中国水上运输船舶行业市场全景调研及投资规划建议报告.docx
- 火力发电厂机组A级检修安全监理细则.pdf VIP
- Q/GDW 13007.12-2018 110kV油浸式电力变压器采购标准(第12部分:110kV80MVA三相三绕组电力变压器专用技术规范).pdf VIP
- 化学危险品的认知与防护.ppt VIP
- 青岛版二年级上册期中考试数学试卷.doc VIP
- 中国人的九种体质-完整版中国人的九种体质-完整版.doc VIP
- GB50235-2010 工业金属管道工程施工规范.pdf VIP
- 医务科【住院病历质控检查评分表】标准规范人民医院及中医医院二甲三甲等级评审用模板.docx
原创力文档


文档评论(0)