文章

16

粉丝

0

获赞

66

访问

3.5k

头像
机器人走迷宫 题解:
P1675 中南大学/中山大学机试题
发布于2025年3月18日 22:08
阅读数 260

首先分析题意,为迷宫问题但是不同于一般的迷宫,其走不通后会顺时针旋转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++)

...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发