2017網易校招真題 地牢逃脫

2022-04-07 08:37:51 字數 1736 閱讀 4979

地牢逃脫

時間限制:1秒 空間限制:32768k 熱度指數:8622

給定乙個 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'x' 表示不可通行的障礙,牛牛從 (x0 , y0 ) 位置出發,遍歷這個地牢,和一般的遊戲所不同的是,他每一步只能按照一些指定的步長遍歷地牢,要求每一步都不可以超過地牢的邊界,也不能到達障礙上。地牢的出口可能在任意某個可以通行的位置上。牛牛想知道最壞情況下,他需要多少步才可以離開這個地牢。

每個輸入包含 1 個測試用例。每個測試用例的第一行包含兩個整數 n 和 m(1 <= n, m <= 50),表示地牢的長和寬。接下來的 n 行,每行 m 個字元,描述地牢,地牢將至少包含兩個 '.'。接下來的一行,包含兩個整數 x0, y0,表示牛牛的出發位置(0 <= x0 < n, 0 <= y0 < m,左上角的座標為 (0, 0),出發位置一定是 '.')。之後的一行包含乙個整數 k(0 < k <= 50)表示牛牛合法的步長數,接下來的 k 行,每行兩個整數 dx, dy 表示每次可選擇移動的行和列步長(-50 <= dx, dy <= 50)
輸出一行乙個數字表示最壞情況下需要多少次移動可以離開地牢,如果永遠無法離開,輸出 -1。以下測試用例中,牛牛可以上下左右移動,在所有可通行的位置.上,地牢出口如果被設定在右下角,牛牛想離開需要移動的次數最多,為3次。
示例1

3 3

......

...0 1

41 0

0 1-1 0

0 -1

3

思路:水題,寬搜即可實現。

#include#include

#include

#include

#include

#define maxn 51

using

namespace

std;

struct

nond;

queue

que;

intnum,anss;

intn,m,sx,sy;

intdx[maxn],dy[maxn];

intans[maxn][maxn],map[maxn][maxn];

void

bfs()}}

}int

main()

}scanf(

"%d%d%d

",&sx,&sy,&num);

for(int i=1;i<=num;i++)

scanf(

"%d%d

",&dx[i],&dy[i]);

memset(ans,

0x7f,sizeof

(ans));

nond v;v.step=0

; v.x=sx+1;v.y=sy+1

; ans[v.x][v.y]=0

; que.push(v);

bfs();

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

if(!map[i][j]&&ans[i][j]!=2139062143

) anss=max(anss,ans[i][j]);

else

if(!map[i][j]&&ans[i][j]==2139062143

) cout

<}

2017網易校招真題 星際穿越

星際穿越 時間限制 1秒 空間限制 32768k 熱度指數 17322 航天飛行器是一項複雜而又精密的儀器,飛行器的損耗主要集中在發射和降落的過程,科學家根據實驗資料估計,如果在發射過程中,產生了 x 程度的損耗,那麼在降落的過程中就會產生 x2 程度的損耗,如果飛船的總損耗超過了它的耐久度,飛行器...

2017網易校招真題 分蘋果

分蘋果 時間限制 1秒 空間限制 32768k 熱度指數 16917 n 只奶牛坐在一排,每個奶牛擁有 ai 個蘋果,現在你要在它們之間轉移蘋果,使得最後所有奶牛擁有的蘋果數都相同,每一次,你只能從乙隻奶牛身上拿走恰好兩個蘋果到另乙個奶牛上,問最少需要移動多少次可以平分蘋果,如果方案不存在輸出 1。...

2017網易校招真題 合唱團

合唱團 時間限制 1秒 空間限制 32768k 熱度指數 38059 本題知識點 動態規劃 有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?每個輸入包...