-
大小: 16KB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 2021-01-05
- 語言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介
一般解空間的隊(duì)列式分支限界法
Description
試設(shè)計(jì)一個(gè)用隊(duì)列式分支限界法搜索一般解空間的函數(shù)。該函數(shù)的參數(shù)包括結(jié)點(diǎn)可行性
判定函數(shù)和上界函數(shù)等必要的函數(shù),并將此函數(shù)用于解布線問題。
印刷電路板將布線區(qū)域劃分成n×m個(gè)方格陣列如圖(a)所示。精確的電路布線問題要求
確定連接方格a的中點(diǎn)到方格b 的中點(diǎn)的最短布線方案。在布線時(shí),電路只能沿直線或直角
布線,如圖(b)所示。為了避免線路相交,已布了線的方格做了封鎖標(biāo)記,其它線路不允許
穿過被封鎖的方格。對(duì)于給定的布線區(qū)域,編程計(jì)算最短布線方案。
Input
由文件input.txt給出輸入數(shù)據(jù)。第一行有3 個(gè)正整數(shù)n,m,k,
代碼片段和文件信息
#include?
#include?
#include?
#include?
using?namespace?std;
ifstream?cin(“1.in“);
ofstream?cout(“1.out“);
struct?pos{
int?xy;
};
int?mnk;
pos?pspe;
vector??>?mv;
queue??Q;
bool?FindPath()
{
if?(ps.x?==?pe.x?&&?ps.y?==?pe.y)
return?true;
pos?offset[4]={{01}{10}{0-1}{-10}};
pos?phpc;
ph?=?ps;
mv[ps.x][ps.y]?=?2;
do{
for(int?i?=?0;?i?4;?i++)
{
pc.x?=?ph.x?+?offset[i].x;
pc.y?=?ph.y?+?offset[i].y;
if?(mv[pc.x][pc.y]?==?0)
{
mv[pc.x][pc.y]?=?mv[ph.x][ph.y]?+?1;
if?(pc.x?==?pe.x?&&?pc.y?==?pe.y)
break;
Q.push(pc);
}
}
if(pc.x?==?pe.x?&&?pc.y?==?pe.y)
break;
if?(Q.empty())
return?false;
ph.x?=?Q.front().x;
ph.y?=?Q.fr
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2055??2008-11-22?12:46??一般解空間的隊(duì)列式分支限界法\1127.cpp
?????文件??????36864??2009-03-13?19:21??一般解空間的隊(duì)列式分支限界法\一般解空間的隊(duì)列式分支限界法.doc
?????目錄??????????0??2009-03-13?19:22??一般解空間的隊(duì)列式分支限界法
-----------?---------??----------?-----??----
????????????????38919????????????????????3
評(píng)論
共有 條評(píng)論