周賽 簡單的bfs

2021-07-04 10:20:17 字數 902 閱讀 6128

討論版問題

名次狀態

統計貪心的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 2

0 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 可以入...