題目:
思路:
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 演算法問題其實都是在幹這個事兒。把枯燥的本質搞清楚了,再去欣賞各種問題的包裝才能胸有成竹嘛。這個廣義的描述可以有各種變體,比如走迷宮,有的格仔是圍牆不能走,從起點到終點的最短距離是多...