日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

poj3984 迷宫问题 bfs 最短路 广搜

發布時間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj3984 迷宫问题 bfs 最短路 广搜 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
迷宮問題
Time Limit:?1000MS?Memory Limit:?65536K
Total Submissions:?27913?Accepted:?16091

Description

定義一個二維數組:?
int maze[5][5] = {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,};
它表示一個迷宮,其中的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)直接廣搜即可

就是用隊列進行遞歸,每找到一種可能走的方式就放入隊列中,這樣每次從隊列頭部取出來的一定是按照第一步,第二步,第三步的順序來的,如果第一步能找到第二步,就把所有走第二步的方法放入隊列,然后用遞歸嘗試每一種走法

需要注意將走過的路標記,不然會重復遞歸最后弄成死循環


#include <iostream> #include <algorithm> #include <cstdlib> #include <cstdio> #include <queue> typedef struct {int x,y;} maze; using namespace std; queue<maze> Queue; //隊列存入下一步要走的所有可能方式 int Maze[5][5] = {{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}};//迷宮 int Move[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};//移動方向:右,上,左,下,畫個直角坐標系就知道了; maze route[50][50]; //結構體數組記錄上一路徑int Juge(int x,int y) {return x<5&&x>=0&&y<5&&y>=0; //判斷坐標(x,y)代表的點是否在迷宮內(防止數組越界)} void Type(int x,int y) {if(x!=0||y!=0)Type(route[y][x].x,route[y][x].y); //真*遞歸打印術printf("(%d, %d)\n",y,x);}void bfs(int x,int y) {if(!Queue.empty()) ///每次bfs就把相應的點排除Queue.pop();for(int i=0; i<4; i++) {int a = x+Move[i][0];int b = y+Move[i][1]; //(a,b)表示下一步移動的位置if(Juge(a,b))if(Maze[b][a]==0) { //可以走maze buf; //用來將坐標信息入隊的緩存結構體buf.x = a;buf.y = b;route[b][a].x = x;route[b][a].y = y; //錄入該點的上一步Queue.push(buf);//將可以走的路壓入隊列Maze[b][a] = 1; //走過的路標記為墻}}if(!Queue.empty()&&x!=4||y!=4) //如果沒到達,繼續廣搜bfs(Queue.front().x,Queue.front().y);elseType(4,4); //找到了就直接打印} int main() {bfs(0,0);return 0;}




轉載于:https://www.cnblogs.com/bestsort/p/10588910.html

總結

以上是生活随笔為你收集整理的poj3984 迷宫问题 bfs 最短路 广搜的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。