题目就不贴了
因为明天要参加网易游戏研发岗实习生笔试,所以今天看了看去年的题目,虽然当我看到去年研发岗实习生本科生和研究生
最终招的人数是1:138的时候很想弃疗并且后悔投错了岗位,不过想了想还是决定认真的准备下,权当练手了。由于现在 已经不能在线提交了,所以也不知道自己写的是不是正确的,只是测试了给的样例通过了。代码思路很简单直接模拟就行 不过去年这道题的通过率好像只有42%?不懂为什么这么低,参加笔试的最起码都通过网易游戏简历关了吧,最起码也是985高校吧(不然应该是过不了简历吧。。)难道是有哪些corner case我没想到的(Σ( ° △ °|||)︴)
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<vector<int>> board;
int cols, rows, cases;
cin >> cols >> rows >> cases;
vector<int> tmp;
int px, py, bx, by,tx,ty;
string t;
for (int i = 0; i < rows; ++i)
{
tmp.clear();
cin >> t;
for (int j = 0; j < cols; ++j)
{
if (t[j] == '1')
{
px = i;
py = j;
}
if (t[j] == '2')
{
tx = i;
ty = j;
}
if (t[j] == '3')
{
bx = i;
by = j;
}
tmp.push_back(t[j] - '0');
}
board.push_back(tmp);
}
string str;
while (cases--)
{
cin >> t;
cin >> str;
int curPx = px, curPy = py, curBx = bx, curBy = by;
int len = str.length();
bool tag = false;
for (int i = 0; i < len; ++i)
{
if (curBy == ty && curBx == tx)
{
cout << "YES" << endl;
tag = true;
break;
}
if (str[i] == 'l')
{
if (curPy == curBy + 1 && curPx == curBx)
{
if (curBy > 0 && board[curBx][curBy - 1] != 4)
{
curBy = curBy - 1;
curPy = curPy - 1;
}
}
else
{
if (curPy > 0 && board[curPx][curPy - 1] != 4)
{
curPy = curPy - 1;
}
}
}
if (str[i] == 'r')
{
if (curPy == curBy - 1 && curPx == curBx)
{
if (curBy < cols - 1 && board[curBx][curBy + 1] != 4)
{
curBy = curBy + 1;
curPy = curPy + 1;
}
}
else
{
if (curPy < cols - 1 && board[curPx][curPy + 1] != 4)
{
curPy = curPy + 1;
}
}
}
if (str[i] == 'u')
{
if (curPy == curBy && curPx == curBx + 1)
{
if (curBx > 0 && board[curBx - 1][curBy] != 4)
{
curBx = curBx - 1;
curPx = curPx - 1;
}
}
else
{
if (curPx > 0 && board[curPx - 1][curPy] != 4)
{
curPx = curPx - 1;
}
}
}
if (str[i] == 'd')
{
if (curPy == curBy && curPx == curBx - 1)
{
if (curBx < rows - 1 && board[curBx + 1][curBy] != 4)
{
curBx = curBx + 1;
curPx = curPx + 1;
}
}
else
{
if (curPx < rows - 1 && board[curPx + 1][curPy] != 4)
{
curPx = curPx + 1;
}
}
}
}
if (curBy == ty && curBx == tx)
{
cout << "YES" << endl;
tag = true;
}
if (!tag)
cout << "NO" << endl;
}
return 0;
}