网易游戏2016研发实习生招聘在线编程题目 推箱子

题目就不贴了

因为明天要参加网易游戏研发岗实习生笔试,所以今天看了看去年的题目,虽然当我看到去年研发岗实习生本科生和研究生

最终招的人数是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;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值