BFS例題 A計畫

2021-07-26 01:48:32 字數 1865 閱讀 2735

c

ontr

ibcontrib

/a11y/accessibility-menu.js

關於 bfs要點:

1、若為可化為的座標系圖形,可用結構體儲存其x值,y值和步數。(一般開now 和 next ,now用於取出佇列裡面的結構體)next用於上下左右的運動計算,並且push到佇列中。

2、在運用佇列時,常用的函式(push,front,size,empty,pop 等等),特別是在front佇列裡面的結構體時記住pop,佇列裡面的內容是先存放先使用,有序取出。

3、在壓入點到佇列中時要進行判斷是否合理,可寫乙個函式check進行判斷,判斷依據是否出界,以及是否合題意要求。

4、題目a計畫中的」傳送門「並不會影響step,在判斷過於複雜時可以寫函式以免混淆思維。在關鍵點可以用陣列進行記錄,開陣列時可以根據題意開大10%的陣列(題意:a<=100  可開a[110])。

5、在移動壓縮時,可根據題意開乙個二維陣列進行前後左右的移動,移動時一般使用next結構體。

bfs例題:

a計畫可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出訊息說將在t時刻吃掉公主,因為他聽信謠言說吃公主的肉也能長生不老。年邁的國王正是心急如焚,告招天下勇士來拯救公主。不過公主早已習以為常,她深信智勇的騎士lj肯定能將她救出。

現據密探所報,公主被關在乙個兩層的迷宮裡,迷宮的入口是s(0,0,0),公主的位置用p表示,時空傳輸機用#表示,牆用*表示,平地用.表示。騎士們一進入時空傳輸機就會被轉到另一層的相對位置,但如果被轉到的位置是牆的話,那騎士們就會被撞死。騎士們在一層中只能前後左右移動,每移動一格花1時刻。層間的移動只能通過時空傳輸機,且不需要任何時間。

input

輸入的第一行c表示共有c個測試資料,每個測試資料的前一行有三個整數n,m,t。 n,m迷宮的大小n*m(1 <= n,m <=10)。t如上所意。接下去的前n*m表示迷宮的第一層的布置情況,後n*m表示迷宮第二層的布置情況。

output

如果騎士們能夠在t時刻能找到公主就輸出「yes」,否則輸出「no」。

sample input

1

5 5 14

s*#*.

.#...

.....

****.

...#.

..*.p

#.*..

***..

...*.

*.#..

sample output

yes

#include #include #include using namespace std;

struct node

;int t,n,m,lim;

int s[3],e[3];

int to[4][2] = ;

char map[2][15][15];

int use[2][15][15];

int check(int floor,int x,int y)

void bfs()

if(a.step>=lim)

break;

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

if(next.floor == e[0] && next.x == e[1] && next.y == e[2])

q.push(next);}}

printf("no\n");

}int main()

{ int i,j,k;

scanf("%d",&t);

while(t--)

{scanf("%d%d%d",&n,&m,&lim);

for(int k=0;k<2;k++)

{for(i=0;i

BFS基礎例題

都是kuangbin的題 例1 poj2251 dungeon master 三維迷宮問題 題目大意 在三維空間中給出起點和終點,找最短的逃出去的路徑長 做法 bfs基礎上增加一維,本質是一樣的 const int maxn 2e6 7 const int inf 1e9 const ll inff...

BFS和佇列例題

poj2251dungeon master 最簡單的bfs求最短距離,只是改一下方向陣列就可以,二維陣列改為三維陣列 下面是ac 對了,下面用的c 佇列,其實很簡單,就只有幾種操作 先介紹佇列的定義 queue 型別名 變數名,如 queueq,queue或queueque struct node ...

例題 收入計畫

高考結束後,同學們大都找到了乙份臨時工作,渴望掙得藝些零用錢。從今天起,matrix67將連續工作n天 1 n 100000 每一天末他可以領取當天及前面若干天裡沒有領取的工資,但他總共只有m 1 m n 次領取 資的機會,matrix67已經知道了在 接下來的這n天裡每一天他可以賺多少錢。為了避免...