- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二电路布线问题
班级:计算机1405组别:4
班级:
计算机1405
组别:4
姓名:刘诚阳
学号问题定义及需求分析
1?1课题目的和任务
问题描述:
印刷电路板将布线区域划分为nXn个方格阵列。在布线时,电路只 能沿直线或直角布线。为避免线路相交,已布线的方格要做封锁标记。 设起始位置为终止位置为b,求解电路布线问题。
实验要求:
设计印刷电路板的布线模拟程序。
1) 采用栈或队列等数据结构。
2) 采用穷举法的回溯搜索,求3到b可能的布线线路。
3) 推荐采用层次优先搜索,求3到b最优的布线线路。
1?2数据形式
输入数据形式:通过生成随机数的函数随机生成一个矩阵。
输入值的范围:生成的矩阵中的数值为int型,为0或者1,其中0表 示死路,1表示通路。
输出数据形式:输出到显示器。
1?3程序功能
随机给定一个线路分布矩阵,利用穷举法,通过栈的应用,求出从 a到b的可能布线线路;采用层次优先搜索,通过队列的应用,求岀a 到b的最优布线线路。
1?4测试数据
测试数据为随机生成的矩阵。
概要设计
1抽象数据类型
需要定义一个位置类型的数据,里面包含int型的x和y坐标,用来 记录位置信息;再定义一个SWire的通道块数据类型,里面包含该通 道块的位置数据,在路径上的序号和方向信息;另外述需要构建栈和 队列的基本结构类型。
2主程序流程及各模块之间的调用关系
详细设计
1存储结构实现
typedef struct {//位置
int x;
int y;
}Positi on;
typedef struct {//移动标记 int ord;
Position seat; int di;
}SWire;
typedef struct {//栈
SWire* base;
SWire* top;
int stacksize;
}Stack;
typedef struct QNode{〃队歹!J
Position data; struct QNode* next;
JQNode/QP;
typedef struct{
QP fron;
QP rear;
JLinkQ;
2负责模块的伪码算法
(1) int WirePath(int** Board,Position start,Position finish) { //寻找路径算法
//若有从电路板的入I」start到出口 end的通道,则求得一条存放在栈中
// (从栈底到栈顶)
InitStack(S);
curpos=start;//设定当前位置为入口位置 curstep 二 1;//探索第一步 do{
辻(Pass(S, curpos)) {//当前位置可通过,即是未曾走到的通道块 Footprint (curpos) ;//留下足迹 e= (curstep, curpos, 1); Push(S, e); 〃加入路径 if (curpos二二finish) {//到达出口 (终点)
PrintStack(S);〃输岀路径
Printf (电路板的搜寻图)
}
retur n 1;//返冋
}
NcxtPos (curpos, 1) ;//下一位置是当而位置的东邻 curstep++; //探索-卜-一步
}
else {//当前位置不能通过
Pop(S, e);
if (S. top!=S. base) {//栈空 while(e? di==5S.top!=S? base) { MarkPrint (e.seat); Pop(S, e) ;//留下不能通过的标记,并退冋一步 }
}
辻(e. di5) {
e. di++;
Push(S, e) ;//换下一个方向探索
NextPos(e. seat, e. di);〃设定当前位置是该新方向
//上的相邻块 curpos. x=e. seat, x;
curpos. y二c. scat, y;
}
}
}while(S. base!二S. top);
printf (没有通路);
printf(电路板的搜寻图);
return 0;
}
(2) int FindShortWay(int** Board, Position start, Position finish){ 〃搜寻最短布线路径算法
if (finish==start) {//到达终点,结束
MShortPath=0;
return 1;
}
curpos二st art;//标记当前位置
if (Board[start, x] [start. y]==0) {没有通路! return 0;}
Board [start, x] [start. y]=2;//有通路,则令其值为 2
while仃){//将笫一个通道块赋值2,并将其相邻通道块从右开
您可能关注的文档
最近下载
- 软件服务共享交付中心小组负责人考试.docx VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 架子工技能大赛多选题20220627.docx VIP
- 2024外研版英语三年级上册Unit 3 It's a colourful world 第2课时Speed up 课件.pptx
- 政务数据共享交换平台解决方案(60页PPT).pptx VIP
- 综合序列--单选题6.docx VIP
- 小码王CPA图形化编程二级试题打卡-第3天.docx VIP
- 中国临床肿瘤学会(csco)胃癌诊疗指南2025.docx VIP
- 小码王CPA图形化编程二级试题打卡-第1天.docx VIP
- 人工智能四级模拟测试1.docx VIP
文档评论(0)