A計畫 廣搜

2021-08-28 06:14:23 字數 1623 閱讀 5391

hdu - 2102 

可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出訊息說將在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 #include #include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

#define inf 0x3f3f3f3

#define rep(i,l,r) for(int i=l;i<=r;i++)

#define lep(i,l,r) for(int i=l;i>=r;i--)

#define ms(arr) memset(arr,0,sizeof(arr))

/*priority_queue,greater>q;*/

const int maxn = (int)1e5 + 5;

const ll mod = 1e9+7;

bool vis[5][12][12];

int dx[4]=;

int dy[4]=;

int n,m,t;

struct node

q[1000],a,b;

int bfs()

continue;

else}}

return -1;

}int main() 

}int time=bfs();

if(time!=-1)

cout<<"yes"

cout<<"no"<}

return 0;

}

A計畫(廣搜)

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

hdoj2120 A計畫 (廣搜)

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

廣搜和深搜

一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...