藍橋杯 BFS(迷宮問題2)(演算法筆記7)

2021-10-17 15:32:57 字數 1164 閱讀 7229

關於迷宮問題的dfs,用陣列的方式來做,在之前的部落格上有寫過。

下面直接來看這道題目

書上這個是用佇列的方式來寫,由於之前對stl不是特別熟悉,所以對於佇列的寫法有些生疏。因此在此筆記中,通過書上**實現,並加詳細注釋的方式來進行學習。

大致的思路就如上圖所示

那麼下面是**(含詳細注釋)

如果要賦值貼上**:

#includeusing namespace std;

char room[23][23]; //給房間定義陣列大小為23,由於行列方向最大只有20,所以取稍大即可

int dir[4][2]=,,,};//四個方向分別是左上右下,這個方向的判斷是根據x,y的單位長度變化

int wx,hy,num; //定義行wx列hy與總數變數num

#define check(x,y) (x=0&&y>=0&&yq;//定義佇列,用來存放座標點

node start,next;//定義結構體變數,開始座標點start與下乙個座標點next

start.x=dx;//給開始座標賦初值

start.y=dy;

q.push(start);//將開始座標點放入佇列

while(!q.empty())//佇列不為空則持續迴圈}}

num=0;

bfs(dx,dy);//從起點座標開始搜尋

cout<

}return 0;

}

藍橋杯 BFS 迷宮

本題為2019年省賽b組e題 要求按字典序列印軌跡 問題描述 下圖給出了乙個迷宮的平面圖,其中標記為 1 的為障礙,標記為 0 的為可 以通行的地方。010000 000100 001001 110000 迷宮的入口為左上角,出口為右下角,在迷宮中,只能從乙個位置走到這 個它的上 下 左 右四個方向...

藍橋杯 BFS 八數碼問題(演算法筆記8)

題目中輸入初始狀態和目標狀態,返回最少的移動步數。這與迷宮問題的最短路勁有些許相似,但這裡更多的是一種狀態的思考,本題涉及到 康托展開 這個特殊的雜湊函式。但是,思路有了不代表能做對,因為ac還要考慮時間複雜度,空間複雜度問題,不過一般空間複雜度都沒太大的問題。那麼為什麼這裡說不能做對?這裡參考書上...

BFS演算法 藍橋杯長草問題

小明有一塊空地,他將這塊空地劃分為 nn 行 mm 列的小塊,每行和每列的長度都為 1。小明選了其中的一些小塊空地,種上了草,其他小塊仍然保持是空地。這些草長得很快,每個月,草都會向外長出一些,如果乙個小塊種了草,則它將向自己的上 下 左 右四小塊空地擴充套件,這四小塊空地都將變為有草的小塊。請告訴...