討論版問題
名次狀態
統計貪心的mzy去乙個迷宮尋寶。已知:若mzy在位置(x, y),他下一次只能移動到(x-1, y)、(x+1, y)、(x, y-1)、(x, y+1)四個位置中的任乙個(前提不能越界)。
畢竟他不是我,我可以直接飛到寶物那裡去。由於mzy比較笨拙,他移動一步需要1分鐘。請你幫他算出找到寶物所需要花費的最少時間。
迷宮是乙個n*m的地圖,圖中只有四個數字。
0:此處是空的,可以走
1:此處有障礙,不可以走
2:mzy起點
3:寶物位置(只有乙個寶物)
題目保證czy至少有一條路可以到達寶物位置。
輸入資料有多組。
每組以兩個整數n和m開始,分別表示迷宮的行數和列數,接下來n行每行有m個數。(1 <= n, m <= 10)
輸出mzy找到寶物的最少需要花費的時間。(以秒為單位)
2 20 21 3
搜尋
#include#include#include#includeusing namespace std;
struct node
} a,b;
int mp[1000][1000];
int vis[1000][1000];
int dis[1000][1000];
int n,m,ex,ey,bx,by,ans;
int dx[4]=;
int dy[4]=;
int jug(int x,int y)
int bfs(int x,int y)}}
}int main()
bfs(bx,by);
printf("%d\n",dis[ex][ey]*60); }
}
簡單易懂的BFS
bfs從起點開始,優先搜尋離起點最近的點,然後由這個最近的點擴充套件其他稍近的點,這樣一層一層的擴充套件,就像水波擴散一樣。bfs需要借助佇列來實現 初始的時候把起始點放入佇列中,並標記起點訪問 如果佇列不為空,從佇列中取出乙個元素x,否則演算法結束 訪問和x相連的所有點v,如果v沒有被訪問,把v入...
簡單易懂BFS
廣度優先搜尋,又稱寬度優先搜尋,簡稱bfs bfsbfsbf sbfs bfs從起點開始,優先搜尋離起點最近的點,然後由這個最近的點擴充套件其他稍近的點,這樣一層一層的擴充套件,就像水波擴散一樣。b fs bfsbf s需要借助佇列來實現 根據該思路可以得出乙個簡單的 框架 void bfs 起始點...
簡單的BFS學習筆記
什麼是bfs 傳送門。今天學習bfs,加油!先定義個陣列 struct node int map 5 4 node queue 25 佇列 bfs關鍵的是佇列。下面寫個函式用於入隊操作 int rudui int a,int b 入隊 邊界控制 if book a b 0 map a b 3 可以入...