挺有趣的一道題目,然而很容易wa,我就wa了一次,雖然我debug的時候已經知道**出問題了,就是比如說我搜到b和e時,從b搜第三個點,b左邊的e就被搜了,step為3,然而其實他是step為2,
這裡的處理方法很是巧妙,可以從b出發時,把b換成e,step+1,形成乙個新的結點加入到佇列中去.
之後,和杰哥交流了這下題,我對這個bfs又有了新的一點認識,bfs時,每次搜尋的點,都要是同一級別的點,想這裡b,和e就不是同一級別的點,所以將這個b,分成兩部,注意b搜完後不要標記,b還沒有訪問完。
#include #include#include
using
namespace
std;
int to[4][2]= ,,,};
struct
point
;int
r,c;
char maps[305][305
];bool vis[305][305
];bool judge (int rx,int
cx)int
main()}}
int ans = -1
; queue
q; point a,next;
a.r =sr;
a.c =sc;
a.step = 0
; vis[a.r][a.c] = true
; q.push(a);
while(!q.empty())
if(maps[a.r][a.c]=='b'
)
for(int i=0; i<4; i++)
}printf(
"%d\n
",ans);
}return0;
}
poj2312優先佇列BFS
題意 給你乙個m行n列的矩陣。y代表起點,t代表終點。b e可以走,s r不可以走,b的時間花費為2,e為1.求y到t的最短時間。思路 用優先佇列bfs一遍就可以了 include include include include include include includeusing namesp...
NYOJ 284 坦克大戰(BFS)
好累啊,寫篇部落格歇歇。題目背景很有趣,是大家小時候經常玩的坦克大戰,哈哈。弱弱地表示本人小時候經常玩遊戲機。此題是在迷宮問題的基礎上做了些改動,就是地圖上能走的點可能耗費時間1,也可能耗費時間2。那麼,元素在出佇列時,不能簡單的按照以前的入隊順序出隊了,而應該讓時間最短的先出隊,這樣就能夠保證先入...
nyoj284 坦克大戰 搜尋 bfs
樣例輸入 3 4ybeb eere sste 0 0樣例輸出 8 題意 從y字母的位置到t字母的位置最少trun了幾次 遇到r,s不能走,遇到b的話要turn 2次。坑點在必須用優先佇列,hiphop man 為什麼?真的不知道 不喜歡你的style kkk include include incl...