計蒜客 蒜頭君回家

2021-10-04 23:10:22 字數 1564 閱讀 7200

樣例輸入

8 10

p.####.#p#

…#…#…#

…#t##.#.#

……##.#####

…#####…##

###…s##

樣例輸出

思路用兩次bfs,第一次計算出起點到p的距離,第二次計算出t到p的距離,然後迴圈取最小值。

但是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 ...