我该如何制作一个机器人(用字符'X'表示),通过使用随机数生成的迷宫方式找到它
我真的需要帮助。我正在尝试创建一个机器人,以发现它走出迷宫的方式。我已经使用一系列角色创建了迷宫,但我实际上不知道如何解决这个问题。我真的很喜欢一些帮助。
我需要实现3个函数: •createMaze(char maze [] [columns],int columns,int rows) - 初始化您的迷宫•showMaze(char迷宫[] [列],int列,int行) - 显示迷宫机器人 •机器人(焦迷宫[] [列],INT lastColumn,诠释LASTROW,INT & nextColumn,诠释 & nextRow) - 机器人做随机移动我该如何制作一个机器人(用字符'X'表示),通过使用随机数生成的迷宫方式找到它
这里是我到目前为止的代码:
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main()
{
char maze [10][10] =
{ {'*','*','*','*','*','*','*','*','*','*',},
{'*', ' ', ' ', ' ',' ', ' ',' ', ' ',' ', ' ',},
{'*','*',' ','*','*','*','*',' ','*','*',},
{'*','*',' ','*',' ','*','*',' ','*','*',},
{'*','*',' ',' ','*','*','*',' ','*','*',},
{'*','*',' ','*','*','*','*','*',' ','*',},
{'*','*',' ',' ',' ','*',' ','*','*',' ',},
{'*','*','*','*',' ','*','*','*','*','*',},
{'*','*','*','*',' ','*','*','*','*',' ',},
{'*','*','*','*',' ','*',' ',' ','*','*',}
};
for (int row = 0; row < 10; row++)
{
for (int col = 0; col < 10; col++)
{
cout << maze[row][col];
}
cout << endl;
}
return 0;
}
cout << ================================= << endl;
/*
********** // robot enters from here
*
** **** **
** * ** **
** *** **
** ***** *
** * **
**** *****
**** ****
**** * **
// robot exits here
Program ended with exit code: 0
*/
人们说永远跟着墙,最终你会发现t他走出去。我曾经在我的代码中使用这种方式。从头开始,始终检查你周围的事物。选择左侧或右侧的墙。让角色跟随墙壁。它会找到一条出路。这就像你开始走路一样,把手放在墙上,你永远不会把手从墙上拿开。
例如在下面的图片中,我把一个链接。打开链接并从起始点开始,只在左边的墙上开始或右侧。你会找到出路。我试图进行机器人竞赛,就像我们正在寻找房间来寻找东西。 https://mathjokes4mathyfolks.files.wordpress.com/2011/09/maze.png
你这里知道迷宫的开始和结束位置的有优势。既然你知道这一点,你可以使用*搜索算法这里提到答:我用这个今年早些时候,解决从Palo Alto Networks的挑战迷宫问题 https://www.laurentluce.com/posts/solving-mazes-using-python-simple-recursivity-and-a-search/
,效果不错。
我也尝试过随机游走,它可以解决迷宫问题,但是由于您了解环境,所以此算法效率更高。
你能提供一些更多的参数给你的问题吗?是否有确定的入口/出口点?还是机器人需要找到?机器人能够立即看到整个迷宫吗?或者只有它可以在任何给定步骤中移动的4个可能方向?如果机器人使用进入迷宫的相同入口退出迷宫,那么可以吗? – MikeMayer67
在“夜间狗的好奇事件”中有详细的算法。请参阅https://en.wikipedia.org/wiki/The_Curious_Incident_of_the_Dog_in_the_Night-Time – Bathsheba