B4352 [信息与未来 2025] 迷宫探险(暂无 SPJ)

题目描述

Dr. X 把他的机器人超时空传送到了一个未知的空间,也不知道机器人的初始位置和方向。Dr. X 只知道这个未知的空间可以看作由方格组成的矩形方阵,其中的每个方格要么是障碍物,要么是空地。Dr. X 很想知道空间的结构,因此他打算让机器人探索这个空间,并绘制出迷宫的地图。 Dr. X 每次可以给他的机器人发送一条指令,并等待机器人反馈。指令有三种: - $\tt LEFT$,向左旋转 $90$ 度。机器人会返回旋转后的方位($\tt E, W, S, N$ 分别表示东、西、南、北)。 - $\tt RIGHT$,向右旋转 90 度。机器人会返回旋转后的方位($\tt E, W, S, N$ 分别表示东、西、 南、北)。 - $\tt GO$,尝试向前(当前面前的方向)移动到相邻的方格。如果前方的方格是障碍物,机器人会返回 $\tt FAIL$。否则,机器人会返回 $\tt SUCC$ 并移动到到该方格。 ![](https://cdn.luogu.com.cn/upload/image_hosting/mrbguihr.png) 你需要编程操纵 Dr. X 的机器人(发送 $\tt LEFT/RIGHT/GO$ 指令),读取机器人的反馈,并在探索完成后绘制出迷宫的地图。 ### 交互方式 **本题为交互题,你的程序通过标准输入输出 (键盘输入、屏幕输出) 与另一个程序交互**: ```cpp while (true) { string feedback; command = ...; // 确定下一条指令 cout feedback; // 得到机器人的反馈 if (all_explored) { // 已经探明所有方格 cout

输入格式

见「交互方式」。

输出格式

见「交互方式」。

说明/提示

### 数据范围 对于 $50\%$ 的数据,迷宫中可达的格子不超过 $10$ 行、$10$ 列。 对于 $100\%$ 的数据,迷宫中可达的格子不超过 $100$ 行、$100$ 列。你的程序调用 $\tt GO$ 的次数不得超过 $5\times 10^4$ 次;你的程序输出的迷宫不得超过 $102$ 行、$102$ 列;未探测到的区域无需输出。 ### 提示 你提交的代码存在交互式的循环: ```cpp cout feedback; // 得到机器人的反馈 ``` 如果手工输入反馈,测试代码就会变得很困难。如果希望测试你的代码,我们建议将输入(`cin>>feedback`)替换为模拟实现的机器人反馈函数: ```cpp cout feedback`。**