題意:
給你乙個n*m的矩陣,然後給你機械人的起點和終點,還有起點的方向,然後每次機械人有兩種操作,左右旋轉90度,或者是朝著原來的方向走1,2或者3步,機械人再走的過程中不能碰到格仔,也不能碰到邊界,輸出最少步數。
思路:比較簡單的題目,只是要注意幾點。
(1)走的過程中邊界不可以碰
(2)如果你想一下子走3步的話,記住路程中不能碰牆
(3)mark的時候記得也罷方向mark上。
簡單題目,就說這麼多吧。
#include
#include
#include
using namespace std;
typedef struct
node;
int sx ,sy ,ex ,ey ,n ,m ,sdir;
int mark[55][55][5];
int map[55][55];
node xin ,tou;
bool jude2(int x ,int y)
bool ok(int x ,int y ,int dir)
int bfs()
//right
xin = tou;
xin.t ++ ,xin.dir --;
if(xin.dir == 0) xin.dir = 4;
if(ok(xin.x ,xin.y ,xin.dir))
for(int i = 1 ;i <= 3 ;i ++)
if(tou.dir == 3)
if(tou.dir == 2)
if(tou.dir == 4)
if(!mk && ok(xin.x ,xin.y ,xin.dir))}}
return -1;
}int main ()
return 0;
}
POJ 3278 簡單廣搜
poj3278 題意 輸入n,m,求由n到m需要最少步數,n只能加一減一或者乘二。寫的第二道廣搜題,發現用佇列就是每一種可能讀入隊尾,然後再從隊首乙個乙個的遍歷。需要做的是判斷條件和記錄步數。includeusing namespace std include include include def...
poj 1324 狀態廣搜
其實就是我們經常玩的貪吃蛇。不過現在我們優先蛇的頭的話,要用乙個巧妙的雜湊來把蛇的身體表達出來,那麼就可以用乙個4進製的數字來表示,蛇的身體長度最多不超過8,所以最多是2 7種狀態。1 include2 include3 include4 include5 include6 intconst n 8...
廣搜入門(簡單易懂
這裡需要用到 佇列!題目 農夫要抓牛,農夫可以向前走一步,向後走一步,向前走x步 x為農夫座標 求最短走幾次可以走到牛的座標。模板 1 為了方便,定義乙個結構體,代表當前x 座標 steps 走了多少步 2 建立乙個結構體佇列a,queuea 2 將起點,即農夫座標加入佇列,此時佇列只有乙個元素,編...