A計畫(廣搜)

2021-07-11 04:24:16 字數 1817 閱讀 6010

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