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步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...