尋找電路佈線最短路徑 Queue

2021-03-31 21:49:18 字數 801 閱讀 3670

bool findpath(position start, position finish, int& pathlen, position* &path)

// 初始化包圍網格的圍牆

for(int i=0; i<=m+1;i++)

// 初始化offset

position offset[4];

offset[0].row=0; offset[0].col=1; // 右

offset[1].row=1; offset[1].col=0; //下

offset[2].row=0; offset[2].col=-1; //左

offset[3].row=-1; offset[3].col=0; //上

int numofnbrs=4;

position here, nbr;

here.row=start.row;

here.col=start.col;

grid[here.row][here.col]=2; // 封鎖

// 標記可到達的網格位置

linkedqueueq;

dowhile(1);

// 構造路徑

pathlen=grid[finish.row][finish.col]-2;

path=new position [pathlen];

// 回溯至finish;

here=finish;

for(int j=pathlen-1; j>=0; j--)

ref:《資料結構,演算法與應用》p201~204

尋找電路佈線最短路徑演算法BFS

問題定義 將佈線區域劃分成一格n m的網格,網格內用 1來標識障礙點,求網格內一點到另一點之間的最短路徑。思想 1 標記距離 先用bfs的方法將網格做個標記,在經過每個的點的位置上記錄一下該點到初始點start之間的距離,一直到終點end。2 回走記錄路徑 從終點往回走,每次只走到比當前位置與開始點...

求解最短路徑之電路佈線

a和b之間的最短路徑需要在兩個過程中確定。一個是距離標記過程,另一個是路徑標記過程。在距離標記過程中,先從位置a開始,把從a可到達的相鄰方格都標記為1 表示與a相距為1 然後把從編號為1的方格可到達的相鄰方格都標記為2 表示也a相鄰為2 這個標記過程繼續下去直到到達b或者沒有可到達相鄰方格為止。距離...

C 電路佈線 最短路徑問題

問題描述 用二維陣列表示地圖,若值為 1 則表示有障礙物,若值為 0 則表示可以通行。輸入 m n 的二維陣列,佈線起點座標,佈線終點座標。輸出 最短佈線距離以及對應的佈線路徑。問題分析 從起點開始佈線,將起點標記為 0 把四周可佈線的位置標記為 起點標記值 1 同時將這些點插進佇列 q 插到隊尾 ...

動態規劃電路佈線

電路佈線簡介 舉例及其詳細說明 塊測試結果 在一塊電路板的上下兩端分別有n個接線柱。根據電路設計,要求用導線 i,i 將上端接線柱i與下端接線柱 i 相連,如圖,其中,i 1 i n,是 1,2 n 的一個排列.導線 i,i 稱為該電路板上的第i條連線.對於任何1 i小於j n,第i條連線和第j條連...

動態規劃 電路佈線

1 問題描述 在一塊電路板的上 下兩端分別有n個接線柱。根據電路設計,要求用導線 i,i 將上端接線柱i與下端接線柱 i 相連,如下圖。其中,i 1 i n,是 1,2,n 的一個排列。導線 i,i 稱為該電路板上的第i條連線。對於任何1 i j n,第i條連線和第j條連線相交的充要條件是 i j ...