文章
16
粉丝
0
获赞
66
访问
3.5k
首先分析题意,为迷宫问题但是不同于一般的迷宫,其走不通后会顺时针旋转90°,如何解决这个旋转问题是关键。而经过分析,假设机器人是从L开始(即开始向左走),走不动后旋转顺时针90°变为向上走,同理可推出走的轮回为(左->上->右->下),故我们采用二维数组来表示迷宫,额外定义dx,dy来进行完成移位操作。<<此处需要注意,在二维数组中a[x][y]中向上走表示a[x-1][y]>>故我们只需将位移表示为数组下标的加减即可,按照上述推出的规则构造dx和dy(具体如下代码所示),而利用%4来完成向下走到向左的循环(本质就是改变dx数组的下标)。此处直接利用一个while(1)循环即可,直至走不动为止。
代码如下:
#include <bits/stdc++.h>
using namespace std;
char mpt[20][20];//地图构造
int dx[4] = {0, -1, 0, 1}; // id=0,1,2,3分别为向左上右下走
int dy[4] = {-1, 0, 1, 0}; // 此处需注意二维数组的表示
int vis[20][20];
typedef struct
{
int x, y;//定义一个结构体当作容器保存中间变量
} pos;
int main()
{
int w, h;
while (cin >> w >> h)
{
memset(mpt, '*', sizeof(mpt)); // 迷宫初始化
memset(vis, 0, sizeof(vis));
pos p;
char c;
for (int i = 1; i <= w; i++)
{
for (int j = 1; j <= h; j++)
...
登录后发布评论
暂无评论,来抢沙发