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

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

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论