樣例輸入
8 10樣例輸出 思路用兩次bfs,第一次計算出起點到p的距離,第二次計算出t到p的距離,然後迴圈取最小值。p.####.#p#
…#…#…#
…#t##.#.#
……##.#####
…#####…##
###…s##
但是wa了很多次,找了很久,發現是vis判斷的問題,導致乙個資料更新多次。
ac**
#include
#include
#include
#include
using
namespace std;
typedef pair<
int,
int> p;
int n,m;
char g[
2005][
2005];
int res[2]
[2005][
2005];
bool vis[2]
[2005][
2005];
int dx=
;int dy=
;bool
check
(int x,
int y)
void
bfs(
int x,
int y,
int k)}}
}int
main()
int sx,sy,tx,ty;
queue
qe;for(
int i=
0;i)else
if(g[i]
[j]==
's')
else
if(g[i]
[j]==
't')}}
memset
(res,
0x3f
,sizeof
(res));
bfs(sx,sy,0)
;//cout
(tx,ty,1)
;int ans=
0x4fffff
;while
(!qe.
empty()
) cout << ans << endl;
return0;
}/*10 10
p.####.#p#
..#..#...#
..#t##.#.#
...ppp....
..##p#####
....pppp..
.####ppp##
.##....s##
........##
##########
*/
計蒜客 蒜頭君回家(bfs)
蒜頭君要回家,但是他家的鑰匙在他的朋友花椰妹手裡,他要先從花椰妹手裡取得鑰匙才能回到家。花椰妹告訴他 你家的鑰匙被我複製了很多個,分別放在不同的地方。蒜頭君希望能盡快回到家中,他需要首先取得任意一把鑰匙,請你幫他計算出回家所需要的最短路程。蒜頭君生活的城市可以看做是乙個 n m 的網格,其中有道路有...
計蒜客 蒜頭君回家 bfs
題目鏈結 bfs廣搜,從s到p 從t到p的所有求最小值輸出就好,需要注意的地方 採用了stl的map,map預設按key值排序,故當使用自定義結構體時,應當在結構體內重構比較運算子,一開始只是簡單比較了point的x值,後來插入有誤,檢查後發現當x值相等時便覆蓋了相同x值的對映 採用的point結構...
蒜頭君面試 計蒜客
蒜頭君來蒜廠面試的時候,曾經遇到這樣乙個面試題 給定 n nn 個整數,求裡面出現次數最多的數,如果有多個重複出現的數,求出值最大的乙個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。輸入格式 第一行輸入乙個整數 n 1 n 100000 n 1 le n le 100000 n 1 n 1000 ...