- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
问题描述
?? ?印刷电路板将布线区域划分成n×m个方格如图a所示。精确的电路布线问题要求确定连接方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿直线或直角布线,如图b所示。为了避免线路相交,已布了线的方格做了封锁标记,其它线路不允穿过被封锁的方格。?
? ??一个布线的例子:图中包含障碍。起始点为a,目标点为b。
? ? ?算法思想
? ? ??解此问题的队列式分支限界法从起始位置a开始将它作为第一个扩展结点。与该扩展结点相邻并且可达的方格成为可行结点被加入到活结点队列中,并且将这些方格标记为1,即从起始方格a到这些方格的距离为1。
? ? ?接着,算法从活结点队列中取出队首结点作为下一个扩展结点,并将与当前扩展结点相邻且未标记过的方格标记为2,并存入活结点队列。这个过程一直继续到算法有哪些信誉好的足球投注网站到目标方格b或活结点队列为空时为止。即加入剪枝的广度优先有哪些信誉好的足球投注网站。
? ? ?算法具体代码如下:
? ? ?1、Queue.h
[cpp]? HYPERLINK /liufeng_king/article/details/8911912 \o view plain view plain? HYPERLINK /liufeng_king/article/details/8911912 \o copy copy
#includeiostream??
using?namespace?std;??
??
template?class?T??
class?Queue??
{??
????public:??
????????Queue(int?MaxQueueSize=50);??
????????~Queue(){delete?[]?queue;}??
????????bool?IsEmpty()const{return?front==rear;}??
????????bool?IsFull(){return?(?(??(rear+1)??%MaxSize==front?)?1:0);}??
????????T?Top()?const;??
????????T?Last()?const;??
????????QueueT?Add(const?T?x);??
????????QueueT?AddLeft(const?T?x);??
????????QueueT?Delete(T?x);??
????????void?Output(ostream?out)const;??
????????int?Length(){return?(rear-front);}??
????private:??
????????int?front;??
????????int?rear;??
????????int?MaxSize;??
????????T?*queue;??
};??
??
templateclass?T??
QueueT::Queue(int?MaxQueueSize)??
{??
????MaxSize=MaxQueueSize+1;??
????queue=new?T[MaxSize];??
????front=rear=0;??
}??
??
templateclass?T???
T?QueueT::Top()const??
{??
????if(IsEmpty())??
????{??
????????coutqueue:no?element,no!endl;??
????????return?0;??
????}??
????else?return?queue[(front+1)?%?MaxSize];??
}??
??
templateclass?T??
T?QueueT?::Last()const??
{??
????if(IsEmpty())??
????{??
????????coutqueue:no?elementendl;??
????????return?0;??
????}??
????else?return?queue[rear];??
}??
??
templateclass?T??
QueueT??QueueT::Add(const?T?x)??
{??
????if(IsFull())coutqueue:no?memoryendl;??
????else??
????{??
????????rear=(rear+1)%?MaxSize;??
????????queue[rear]=x;??
????}??
????return?*this;??
}??
??
templateclass?T??
QueueT??QueueT::AddLeft(const?T?x)??
{??
????if(IsFull
文档评论(0)