廣度優先搜尋(breadth first serch):
以迷宮問題為例:
定義乙個二維陣列:
int maze[5][5] = ,,,};//分別表示路徑下,上,左,右
struct nodeque[50];//模擬佇列,5*5的迷宮
int mark[5][5];//用來標記走過的位置
/*head就是上乙個節點的標記,tail就是緊跟這的那個*/
int head=0;
int tail=0;
int map[5][5];
void bfs(int startx,int starty,int endx,int endy);
void print(node path);
int main()
}bfs(0,0,4,4);//迷宮從(0,0)到(4,4)
print(que[tail-1]);//因為再bfs當中最後tail多了乙個所以要減去
return 0;
}void bfs(int startx,int starty,int endx, int endy)
head++;
}}void print(node path)
else
}
迷宮問題 廣搜
定義乙個二維陣列 int maze 5 5 queue 26 int head 0,tail 0,a 5 5 book 5 5 void function int tail 引數是隊尾 else function queue tail f 如果隊尾的父節點不是0 就將該父節點作為新的隊尾繼續呼叫 這...
迷宮問題(廣搜與深搜)
定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。input 乙個5 5的二維陣列,表示乙個迷宮。資料保證有唯一解。output 左上角到右下角的最短路徑,格式如樣例所示。sa...
NYOJ 迷宮尋寶(一) 搜尋 廣搜
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 乙個叫acm的尋寶者找到了乙個藏寶圖,它根據藏寶圖找到了乙個迷宮,這是乙個很特別的迷宮,迷宮裡有n個編過號的門 n 5 它們分別被編號為a,b,c,d,e.為了找到寶藏,acm必須開啟門,但是,開門之前必須在迷宮裡找到這個開啟這個門所...