解题思路:
照着题目做

参考代码:

#include<bits/stdc++.h>
using namespace std;
struct m
{
	int seat;
	char x;
}mapp[100][100];        //记录位置
char ant;              //记录方向
void f(const char s)   //旋转函数
{
	if (s == 'L')
	{ 
		if (ant == 'L') ant = 'D';
		else if (ant == 'D')ant = 'R';
		else if (ant == 'R')ant = 'U';
		else ant = 'L';
	}
	else
	{
		if (ant == 'L') ant = 'U';
		else if (ant == 'D')ant = 'L';
		else if (ant == 'R')ant = 'D';
		else ant = 'R';
	}
}
void fxy(int& i, int& j) //每一步的操作
{
	if (mapp[i][j].seat == 0)
	{
		f('L');
		mapp[i][j].seat = 1;
		mapp[i][j].x = '0';
		if (ant == 'L')
		{
			j--;
			mapp[i][j].x = ant;
		}
		else if (ant == 'D')
		{
			i++;
			mapp[i][j].x = ant;
		}
		else if (ant == 'R')
		{
			j++;
			mapp[i][j].x = ant;
		}
		else
		{
			i--;
			mapp[i][j].x = ant;
		}
	}
	else
	{
		f('R');
		mapp[i][j].seat = 0;
		mapp[i][j].x = '0';
		if (ant == 'L')
		{
			j--;
			mapp[i][j].x = ant;
		}
		else if (ant == 'D')
		{
			i++;
			mapp[i][j].x = ant;
		}
		else if (ant == 'R')
		{
			j++;
			mapp[i][j].x = ant;
		}
		else
		{
			i--;
			mapp[i][j].x = ant;
		}
	}

}
int main()
{
	int m, n, i=0, j=0,step; //i,j记录位置
	cin >> m >> n;
	for (int h = 0; h < m; h++)
	{
		for (int l = 0; l < n; l++)
		{
			cin >> mapp[h][l].seat;
		}
	}
	cin >> i >> j;
	cin >> ant;
	mapp[i][j].x = ant;
	cin >> step;
	while (step--)
	{
		fxy(i,j);
	}
	cout << i << " " << j;
}


点赞(0)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论