版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、问题描述印刷电路板将布线区域划分成nxm个方格如图a所示。精确的电路 布线问题要求确定连接方格a的中点到方格b的中点的最短布线方案。 在布线时,电路只能沿直线或直角布线,如图b所示。为了避免线路相 交,已布了线的方格做了封锁标记,其它线路不允穿过被封锁的方格。肋沿览戦即Mi fi就一个布线的例子:图中包含障碍。起始点为a,目标点为bo算法思想解此问题的队列式分支限界法从起始位置a开始将它作为第一个扩展结点。与该扩展结点相邻并且可达的方格成为可行结点被加入到活结点队列中,并且将这些方格标记为1,即从起始方格a到这些方格的距离为1。接着,算法从活结点队列中取出队首结点作为下一个扩展结点,并 将与当
2、前扩展结点相邻且未标记过的方格标记为2,并存入活结点队列。 这个过程一直继续到算法搜索到目标方格b或活结点队列为空时为止。 即加入剪枝的广度优先搜索。算法具体代码如下:1、Queue.hcpp view plain copy#includeusing namespace std;3.template class Queuepublic:Queue(int MaxQueueSize=50);Queue()delete queue;boolIsEmpty()constreturn front=rear;bool IsFull()return ( ( (rear+1) %MaxSize=front
3、)?1:0);T Top() const;T Last() const;Queue& Add(const T& x);Queue& AddLeft(const T& x);Queue& Delete(T &x);voidOutput(ostream& out)const;int Length()return (rear-front);private:intfront;intrear;intMaxSize;T *queue;24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.
4、53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.;templateQueue:Queue(int MaxQueueSize)MaxSize=MaxQueueSize+1;queue=new TMaxSize; front=rear=0;templateT Queue:Top()constif(IsEmpty()coutqueue:no element,no!endl; return 0;else return queue(front+1) % MaxSize;templateT Queue :Last()constif(IsEmpty()coutque
5、ue:no elementendl; return 0;else return queuerear;templateQueue& Queue:Add(const T& x)if(IsFull()coutqueue:no memoryendl;elserear=(rear+1)% MaxSize; queuerear=x;return *this;templateQueue& Queue:AddLeft(const T& x) TOC o 1-5 h z if(IsFull()coutqueue:no memoryendl;elsefront=(front+MaxSize-1)% MaxSize
6、;queue(front+1)% MaxSize=x;return*this;79.templateQueue& Queue :Delete(T & x)if(IsEmpty()coutqueue:no element(delete)endl;elsefront=(front+1) % MaxSize;x=queuefront;return*this;91.92.templatevoid Queue :Output(ostream& out)constfor(int i=rear%MaxSize;i=(front+1)%MaxSize;i-)outqueuei;99.templateostre
7、am& operator (ostream& out,const Queue& x)x.Output(out);return out;2、6d4.cppcpp view plain copy1.布线问题队列式分支限界法求解2.#include stdafx.h3.#includeQueue.h4.#include5.#include6. using namespace std;7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44
8、.45.46.47.48.49.ifstream fin(6d4.txt”); const int n = 7;const int m = 7;int gridn+2m+2;struct Positionint row;int col;bool FindPath(Position start,Position finish, int& PathLen,Position *&path);int main()int PathLen;Position start,finish,*path;start.row = 3;start.col = 2;finish.row = 4;finish.col =
9、6;cou t布线起点endl;coutstart.col start.rowendl;cou t布线结束点endl;coutfinish.col finish.rowendl;cout布线方格阵列如下(0表示允许布线,1表示不允许布线):endl;for(int i=1; i=m; i+)for(int j=1; jgridij;coutgridijcoutendl;50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.
10、88.89.90.91.92.93.FindPath(startfinish,PathLen,path);cou t布线长度为:Pa thLenendl;cou t布线路径如下:endl;for(int i=0; iPathLen; i+)coutpathi.col pathi.rowendl;return 0;bool FindPath(Position start,Position finish, int& PathLen,Position *&path)/计算从起始位置st ar t到目标位置finish的最短布线路径if(start.row = finish.row) & (start
11、.col = finish.col)PathLen = 0;return true;设置方格阵列“围墙”for(int i=0; i= m+1; i+)grid0i=gridn+1i=1; /顶部和底部for(int i=0; i= n+1; i+)gridi0=gridim+1=1; /左翼和右翼/初始化相对位移Position offset4;offset0.row=0;offset0.col=1;/右offset1.row=1;offset1.col=0;/下offset2.row=0;offset2.col=-1;/左offset3.row=-1;94.95.96.97.98.99.1
12、00.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136.137.offset3.col=0;/上int Num0fNbrs=4;/相邻方格数Position here,nbr;here.row=start.row;here.col=start.col;grids tart .rows tar t.col=2; /标记可达方格位置Queue Q;do /标记相邻可达方格for(int i=0; i=0; j-)pat hj=here; /找前驱位置 for(int i=0; iNumOfNbrs; i+) nbr.row=here.row+offseti.row
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年人工智能环境质量监测考试试题及参考答案
- 2026年注册安全工程师(机械安全)实务模拟试卷
- 2026年学校传染病防控方案
- 标准鸿沟与跨越:国内外纺织服装标准差异对我国出口贸易的影响及对策
- 柴胡抗心律失常机制新探:L型钙离子通道抑制作用的深度解析
- 柔性触觉传感阵列的创新设计与接触信息反解方法探究
- 柑橘产业的“隐形杀手”破解之道:接穗与苗木黄龙病病原脱除策略
- 柏木根系分泌物对盆栽香椿和栾树土壤生化特性的影响探究
- 枞阳大山森林演替进程中林下植被生物量分配格局解析
- 枇杷叶中熊果酸提取与分离工艺的深度探究与优化
- 2026年高考生物复习难题速递之基因工程(2025年11月)
- 幼小衔接数学练习题及答题技巧21套
- 2025年10月自考13140财务会计中级试题及答案
- 教务管理岗位面试实战技巧
- 学校分级授权管理制度
- 网格员非法集资风险识别与处置培训
- 2025年大学《公安视听技术-刑事影像技术》考试模拟试题及答案解析
- 全科医学科常见疾病诊断鉴别要点培训指南
- 销售管理教案完整版-第一章第七章(2025-2026学年)
- 芽苗菜知识培训课件
- 升主动脉、主动脉弓置换术及象鼻支架植入术临床路径(2025更新版)
评论
0/150
提交评论