演算法題 BFS之出門最佳

2021-08-07 23:53:50 字數 1259 閱讀 4989

題目:

思路:

1.先根據輸入的機器輻射值對房屋內的點進行輻射標記,若在輻射範圍內,則標記為-1,不在輻射範圍的標記為0;

2.從出發點開始進行廣度優先遍歷,並不斷的更新當前路徑長,結束條件為到達出口或遍歷結束;

注意:ray陣列有兩個作用,剛開始用來標記輻射值,開始遍歷後用來記錄當前路徑長;

**:

#include using namespace std;

int adj[4][2]=;//用來四個方向遍歷

typedef structroom;

void process(int n, int m, int i, int j, int**r)

q.push(beginroom);

while(!q.empty())

{ room curroom = q.front();

q.pop();

if (curroom.x==e.x && curroom.y==e.y)

return ray[e.x][e.y];//到達出口

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

{ int tx=curroom.x + adj[i][0];

int ty=curroom.y + adj[i][1];

if (tx>=0 && tx=0 && ty>n)

{ int m;//列

cin>>m;

room b,e;

cin>>b.x;

cin>>b.y;

cin>>e.x;

cin>>e.y;

int **ray = new int*[n];//輻射陣列

int v;

for (int i=0;i>v;

for (int k=0;k

演算法題 地質調查 BFS

小明是乙個地質調查員,在他調查的地方突然出現個泉眼。由於當地的地勢不均勻,有高有低,他覺得這意味著這裡在不久的將來將會乙個小湖。水往低處流,凡是比泉眼地勢低或者等於的地方都會被水淹沒,地勢高的地方水不會越過。而且又因為泉水比較弱,當所有地勢低的地方被淹沒後,水位將不會 一直定在跟泉眼一樣的水位上。現...

啊哈演算法之BFS

1 include include struct node int main 初始化地圖 int book 50 50 初始化記錄陣列 int next 4 2 int i,j,k 迴圈中用到的迴圈變數 int startx,starty 起點座標 int p,q 終點座標 int flag 0 表...

LeetCode刷題之BFS和DFS

問題的本質就是讓你在一幅 圖 中找到從起點start到終點target的最近距離,這個例子聽起來很枯燥,但是 bfs 演算法問題其實都是在幹這個事兒。把枯燥的本質搞清楚了,再去欣賞各種問題的包裝才能胸有成竹嘛。這個廣義的描述可以有各種變體,比如走迷宮,有的格仔是圍牆不能走,從起點到終點的最短距離是多...