分支限界法 求电路布线的最短路径.doc_第1页
分支限界法 求电路布线的最短路径.doc_第2页
分支限界法 求电路布线的最短路径.doc_第3页
分支限界法 求电路布线的最短路径.doc_第4页
分支限界法 求电路布线的最短路径.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#includeusing namespace std;/import the grid data;ifstream fin(map.txt);/这个map是7行7列,请以这个为例子来理解这个程序typedef struct Positionint row;int col; Posi;/find the shortest path for the gridbool FindPath(Posi start,Posi finish,int & PathLen,int *&grid,Posi *& path,int n,int m)/if the start position is the finish positionif(start.row = finish.row) & (start.col = finish.col)PathLen = 0;return true;Position offset4;offset0.row = -1;/upoffset0.col = 0;offset1.row = 1;/downoffset1.col = 0;offset2.row = 0;/leftoffset2.col = -1;offset3.row = 0;/rightoffset3.col = 1;Posi here,nbr;here.row = start.row;here.col = start.col;int NumOfNbrs = 4;/ajacent position;gridstart.rowstart.col = 2;/init the start positions length with value 2,queue Q;dofor(int firdex = 0;firdex =0;firdex-)pathfirdex = here;for(int secdex = 0;secdex NumOfNbrs;secdex+)nbr.row = here.row + offsetsecdex.row;nbr.col = here.col + offsetsecdex.col;if(gridnbr.rownbr.col = firdex+2)/It is the nbrs grid that why the gridnbr.rownbr.col can give index of firdex+2break;here =nbr;/move to the previous nodereturn true;/allocate memory for the gridvoid InitGrid(int *&grid,int n,int m)grid = new int*n+2;for(int firdex = 0;firdex n+2;firdex+)gridfirdex = new intm+2;/set the boundfor(int index = 0;index m+2;index+)/top an bottomgrid0index = gridn+1index =1;for(int index = 0;index n+2;index+)gridindex0 = gridindexm+1 = 1;for(int firdex = 1;firdex n+1;firdex+)for(int secdex = 1;secdex gridfirdexsecdex;/destroy the resource for the gridvoid Destroy(int * &grid,int n,int m)if(grid != NULL)for(int firdex = 0;firdex n+2;firdex+)delete gridfirdex;gridfirdex = NULL;delete grid;grid = NULL;int main(void)int m = 0,n = 0;Posi start,finish;int PathLength = 0;Posi * path = NULL;int * grid = NULL;coutPlease input the m and n of the grid:nm;coutPlease input the start position:endl;coutstart.row;coutstart.col;coutPlease input the finish position:endl;coutfinish.row;coutfinish.col;InitGrid(grid,n,m);coutthe map resource:endl;for(int firdex = 1;firdex n+1;firdex+)for(int secdex = 1;secdex m+1;secdex+)coutgridfirdexsecdex ;coutendl;coutendl;FindPath(start,finish,PathLength,grid,path,n,m);coutThe shortest path of wiring is :PathLengthendl;coutThe path if follow:endl;for(int index = 0;index PathLength;index+)cout(pathindex.row,pathindex.col);if(index PathLength-1)cout;coutendl;

温馨提示

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

评论

0/150

提交评论