網易遊戲2016實習生招聘筆試題目 推箱子

2021-07-05 02:15:34 字數 1535 閱讀 6336

對於輸入的狀態,找出玩家和箱子的位置,並使用座標記錄其位置,然後對於終端輸入的走法,依次判斷player按該走法一步一步的移動之後是否能夠成功。由於思路比較簡單,實際內容就是如何讓計算機模擬這個推箱子的過程。步驟也很簡單,只有上下左右移動,但是需要注意的是每次移動之前,需要對於題目描述的集中狀態和情況進行判斷,保證每一種情形都考慮到而且不重複判斷。另外還需要注意的一點是,每次移動完成之後,需要對棋盤以及玩家和箱子的位置和狀態進行更新,以便於真正模擬了遊戲的過程。

#include

#include

using

namespace

std;

char chessboard[100][100]; // 棋盤布局

char chessboard_bkup[100][100]; // 棋盤布局

char path[200][10000]; // 推動路徑

int path_count[10000];

string results[10000]; // 記錄每乙個玩法的最終勝負狀態

int main()

}if(flag_2 == true)}}

}for(int i=0;i// 讀取走法需要的步數和具體走法

cin>>path_count[i]>>path[i];

bool flag = false;

for(int i=0;i// 每一次移動之後都需要判斷是否已經到了目標位置

// 在箱子的每次移動的時候需要判斷將要移動的位置是否是目標位置,如果不是,需要對棋盤布局進行修改

// 修改的棋盤是輸入棋盤的乙個副本

flag = false;

player_m = player_m_bkup;

player_n = player_n_bkup;

box_m = box_m_bkup;

box_n = box_n_bkup;

for(int p=0;pfor(int q=0;qfor(int j=0;jif(path[i][j] == 'u')else

} // 若被擋住則什麼也不做

}elseelse}}

}if(path[i][j] == 'd')else

}elseelse}}

}if(path[i][j] == 'l')else

}}elseelse}}

}if(path[i][j] == 'r')else

}}elseelse}}

}}

if(flag == false)

results[i] = "no";

}

for(int i=0;icout

0; }

測試用例和測試結果如下:

箱子在目標點上輸出為yes,否則輸出為no

**中對於狀態和棋盤都是使用的備份內容中實現的,由於時間緊迫,當時採用了這種臨時的做法,後來看看,沒有太多的必要使用乙份備份來進行操作。不過對於推箱子的過程以及狀態判斷和棋盤更新部分的**思路還是正確的。

連連看 網易遊戲2016實習生招聘

但是小江並不滿足於這個遊戲規則,因為他覺得最多只能拐2折這個限制並不合理。好奇的小江想知道的是,給定乙個連連看的狀態以及某乙個牌子,在k折以內可以到達的所有具有相同圖案的牌子的數量是多少。每個輸入資料報含多個測試點。第一行為測試點的個數s 20。之後是s個測試點的資料。每個測試點的第一行為1 n 2...

騰訊 2016屆實習生招聘筆試

乙個商場進行一場 活動,其中有兩個獎項,第乙個獎項a抽中的概率是1 6,第二個獎項b抽中的概率是5 6 用c語言編碼實現這個 程式。題目通過乙個xml文件給出。生成乙個隨機數 隨機數對6取餘,得到的餘數一定是0 1 2 3 4 5共六個數 將這六個數分成兩份 a和b 其中乙份只有0這乙個項,其餘乙份...

網易2019實習生招聘筆試 矩陣重疊

平面內有n個矩形,第i個矩形的左下角座標為 x1 i y1 i 右上角座標為 x2 i y2 i 如果兩個或者多個矩形有公共區域則認為它們是相互重疊的 不考慮邊界和角落 請你計算出平面內重疊矩形數量最多的地方,有多少個矩形相互重疊。輸入描述 輸入包括五行。第一行包括乙個整數n 2 n 50 表示矩形...