/*description
可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。
魔王已經發出訊息說將在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
15 5 14
s*#*.
.#...
.....
****.
...#.
..*.p
#.*..
***..
...*.
*.#..
sample output
yes
公主的位置用p表示,
時空傳輸機用#表示,牆用*表示,平地用.表示。*/
#include #include #include using namespace std;
char map[15][15][2];
int book[15][15][2];
int n,m,t;
int flag;
struct node ;
queueq;
node d;
void fun(int i,int j,int k,int time)
d.x=i-1;d.y=j;d.z=k;
if(map[d.x][d.y][d.z]!='*'&&book[d.x][d.y][d.z]==0)
d.x=i;d.y=j+1;d.z=k;
if(map[d.x][d.y][d.z]!='*'&&book[d.x][d.y][d.z]==0)
d.x=i;d.y=j-1;d.z=k;
if(map[d.x][d.y][d.z]!='*'&&book[d.x][d.y][d.z]==0) }
void bfs(int i,int j,int k)
else if(map[i][j][k]=='s')
else if(map[i][j][k]=='.'&&book[i][j][k]==0)
else if(map[i][j][k]=='#'&&book[i][j][k]==0)
} }int main()
getchar();
} }
for(i=1;i<=n;i++)
} flag=0;
d.x=1;
d.y=1;
d.z=0;
q.push(d);
bfs(d.x,d.y,d.z);
while(!q.empty())
q.pop();
if(!flag)
printf("no\n"); }
return 0;
}
A計畫 廣搜
hdu 2102 可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出訊息說將在t時刻吃掉公主,因為他聽信謠言說吃公主的肉也能長生不老。年邁的國王正是心急如焚,告招天下勇士來拯救公主。不過公主早已習以為常,她深信智勇的騎士lj肯定能將她救出。現據密探...
hdoj2120 A計畫 (廣搜)
problem description 可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命的考驗。魔王已經發出訊息說將在t時刻吃掉公主,因為他聽信謠言說吃公主的肉也能長生不老。年邁的國王正是心急如焚,告招天下勇士來拯救公主。不過公主早已習以為常,她深信智勇的騎士lj肯...
廣搜和深搜
一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...