大釘騎馬走江湖
時間限制(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.步數 ...