bfs模板(從任意起點走到終點所需步數)

2021-07-11 10:54:26 字數 1136 閱讀 8584

大釘騎馬走江湖

時間限制(c/c++):1000ms/3000ms 執行記憶體限制:65536kbyte

總提交:76 測試通過:29

描述江湖是什麼,對於在象棋界廝殺的大釘來說,江湖就是乙個矩陣,他的目標,就是在江湖之中騎著馬,從他的位置出發,走到終點。

當然,大釘的馬也遵從中國象棋中的「馬走日」的規則,而且在矩陣中,也會有一些障礙物,馬不能跳到障礙物上;如果大釘的馬面前有障礙物,即被「別馬腿」,那麼他將不能跳向有障礙物的左前和右前這兩個方向。

請問最少需要多少步,大釘才能騎著馬跳到終點。

輸入有多組測試樣例。

每組第一行有兩個數 n 和 m,代表矩陣的行數和列數,2 <= n <= m < 100。

接下來輸入 n 行的字串,其中 『s』 代表起點,』e』 代表終點,』.』代表空地,』#』代表障礙物。

輸出對應每組輸入,輸出騎馬跳到終點的最小步數,如果跳不到終點,輸出 -1。

樣例輸入

3 3

s..

… ..e

3 3

s#.

… 』#.e

樣例輸出

4 -1

#include

#include

#include

#include

using

namespace

std;

char

map[105][105];

int sx,sy,ex,ey;

int n,m;

int vis[105][105];

int dir[8][2]=;

//實現馬走日

struct node;

void bfs();

q.push(nod);

bool mark=false;

while(!q.empty())

node v;

for(int i=0;i<8;i++)}}

if(!mark)printf("-1\n");

return;

}int main()

else

if(c=='e')

}bfs();

}return

0;}

BFS模板 A計畫

time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status practice hdu 2102 description 可憐的公主在一次次被魔王擄走一次次被騎士們救回來之後,而今,不幸的她再一次面臨生命...

雙向BFS模板

如果已經知道搜尋的開始狀態和結束狀態,要找乙個滿足某種條件的一條路徑 一般是最短路徑 為了避免無謂的 組合 產生,就可以採取雙向廣度搜尋演算法,也就是從開始狀態和結束狀態同時開始搜尋,乙個向前搜,乙個向後找。這樣做的好處是什麼?我們不妨假設每次搜尋的分支因子是r,如果最短的路徑長為l的話 也就是搜了...

BFS基本模板

改改之後就是農夫追牛的ac 題目位址 include using namespace std define n 10000000 迷宮的規模 type start,aim type為某種資料型別 start初始位置,aim目標位置 struct node 記錄兩種狀態 1.記錄該步的狀態 2.步數 ...