地牢逃脫
時間限制: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 個學生的能力值的乘積最大,你能返回最大的乘積嗎?每個輸入包...