深搜和廣搜結合

2021-08-24 23:12:40 字數 1423 閱讀 4847

目錄

poj 3984 迷宮問題

description

定義乙個二維陣列: 

int maze[5][5] = ;

它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。

input

乙個5 × 5的二維陣列,表示乙個迷宮。資料保證有唯一解。

output

左上角到右下角的最短路徑,格式如樣例所示。

sample input

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

sample output

(0, 0)

(1, 0)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 4)

(4, 4)

source

北大課件**:

#include#include#include#include#include#includeusing namespace std;

struct pos

//不斷重新給 r,c,father賦值

};int maze[8][8];

pos que[100];

int head,tail;

pos dir[4]=; //四個方向

int main()

}head=0;

tail=1;

que[0]=pos(1,1,-1);

while(head!=tail)

;for(int i=vt.size()-1;i>=0;i--)

cout<<"("《自己之前**:

#include#include#include#include#include#includeusing namespace std;

struct node

v[20][20];

int vis[20][20];

int dir[4][2]=;

int g[20][20];

queueq;

void dfs(int x,int y)

dfs(v[x][y].x,v[x][y].y);

printf("(%d, %d)\n",v[x][y].x,v[x][y].y);

}void bfs(int a,int b)

for(int i=0;i<4;i++)

} }}

int main()

} bfs(0,0);

return 0;

}

廣搜和深搜

一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...

深搜和廣搜

深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次 採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。基本思路 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依...

深搜和廣搜

qq 親密度用的是帶權圖中,每條邊都有乙個 weight 我們可以通過這個權重來表示 qq 好友間的親密度。鄰接矩陣儲存方法 對於無向圖來說,如果頂點 i 與頂點 j 之間有邊,我們就將 a i j 和 a j i 標記為 1 對於有向圖來說,如果頂點 i 到頂點 j 之間,有一條箭頭從頂點 i 指...