網易遊戲面試題 推箱子

2021-08-21 20:56:15 字數 1269 閱讀 9331

時間限制:1秒

空間限制:32768k

大家一定玩過「推箱子」這個經典的遊戲。具體規則就是在乙個n*m的地圖上,有1個玩家、1個箱子、1個目的地以及若干障礙,其餘是空地。玩家可以往上下左右4個方向移動,但是不能移動出地圖或者移動到障礙裡去。如果往這個方向移動推到了箱子,箱子也會按這個方向移動一格,當然,箱子也不能被推出地圖或推到障礙裡。當箱子被推到目的地以後,遊戲目標達成。現在告訴你遊戲開始是初始的地圖布局,請你求出玩家最少需要移動多少步才能夠將遊戲目標達成。 

輸入描述:

每個測試輸入包含1個測試用例

第一行輸入兩個數字n,m表示地圖的大小。其中0輸出描述:

輸出乙個數字表示玩家最少需要移動多少步才能將遊戲目標達成。當無論如何達成不了的時候,輸出-1。

輸入例子1:

4 4

....

..*@

....

.x..

6 6...#..

......

#*##..

..##.#

..x...

.@#...

輸出例子1:

3

11

解題思路:主要是通過bfs來尋找最少步數。關鍵在於state的構建要同時包含人和箱子的位置,方便進行記錄。還有vst也要是對應的四維陣列記錄是否訪問過。在bfs中每走一步要進行check,同時注意一起判斷是否訪問過該點(包含人和箱子的位置)。若包含直接跳過。

注意: x是行,y是列!!!

實現**如下:

#include#include#includeusing namespace std;

char map[10][10];

int chx,chy,cbx,cby,ex,ey;

int n,m;

bool vst[10][10][10][10];

struct state

};int dir[2][4]=;

bool check(int x,int y)

}else

} } }

return -1;

}int main()

else if(map[i][j] == '*')

else if(map[i][j] == '@')

}cout<}

網易筆試 推箱子

大家一定玩過 推箱子 這個經典的遊戲。具體規則就是在乙個n m的地圖上,有1個玩家 1個箱子 1個目的地以及若干障礙,其餘是空地。玩家可以往上下左右4個方向移動,但是不能移動出地圖或者移動到障礙裡去。如果往這個方向移動推到了箱子,箱子也會按這個方向移動一格,當然,箱子也不能被推出地圖或推到障礙裡。當...

推箱子遊戲

大一寒假 1.寫 時我犯了乙個很大的錯誤 不然早就搞定了 把 與 混淆了 大忌啊 2.這裡實現了數位化編碼 3.上72 下80 左75 右77 4.特殊圖形可以到qq拼音符號裡獲取 include include include define x 1 人的位置 define y 5 define n...

推箱子遊戲

本專案開發環境為vs2017 c 對推箱子遊戲的觀察可以發現,該遊戲就是在乙個頁面對進行移動的操作。因此可以定義乙個二維陣列map,進行初始化。0 空地 1 牆壁 3 箱子的目的地 4 箱子 6 人 7 箱子與目的地重合 9 人在箱子目的地。如下 include include include in...