dogking


私信TA

用户名:dogkingDK

访问量:100

签 名:

等  级
排  名 52338
经  验 270
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 东北大学
专  业

  自我简介:

解题思路:比较简单的一道题

注意事项:注意方向的对应,行数是越向下越大

参考代码:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

char dir;
int x, y, step;

void rotate(bool right)
{
	if(right)
	{
		if (dir == 'U')
			dir = 'R';
		else if (dir == 'R')
			dir = 'D';
		else if (dir == 'D')
			dir = 'L';
		else
			dir = 'U';
	}
	else
	{
		if (dir == 'U')
			dir = 'L';
		else if (dir == 'R')
			dir = 'U';
		else if (dir == 'D')
			dir = 'R';
		else
			dir = 'D';
	}
}

void forward(char dir)
{
	if (dir == 'U')
		--x;
	else if (dir == 'R')
		++y;
	else if (dir == 'D')
		++x;
	else
		--y;
}

int main()
{
	int m, n;
	cin >> m >> n;
	int temp;
	vector<vector<int>> mat = vector<vector<int>>(m, vector<int>(n));

	for(int i = 0; i < m; ++i)
	{
		for(int j = 0; j < n; ++j)
		{
			cin >> temp;
			mat[i][j] = temp;
		}
	}

	cin >> x >> y >> dir >> step;
	// cout << dir << " " << x << " " << y << endl;
	for(int i = 0; i < step; ++i)
	{
		if(mat[x][y] == 0)
		{
			rotate(false);
			mat[x][y] = 1;
			forward(dir);
		}
		else
		{
			rotate(true);
			mat[x][y] = 0;
			forward(dir);
		}
		// cout << dir << " " << x << " " << y << endl;
	}
	cout << x << " " << y;
}


 

0.0分

0 人评分

  评论区

  • «
  • »