#P7225. [RC-04] 走迷宫
[RC-04] 走迷宫
题目背景
这是一道交互题。
请确保您提交前认真阅读过 https://www.luogu.com.cn/blog/luogu/interactive-problems,并且熟知 P1947 的写法。
您可以直接在以下样例程序中编辑:
#include<bits/stdc++.h>
using namespace std;
extern "C" bool move_to(char position);
extern "C" string find_out_map(int X,int Y,int N){
return "233";
}
同时本题不支持 Pascal,祝愿 Pascal 党早日转 C++。
题目描述
题目描述
这是一道交互题。
你被困在一个迷宫内,你需要求出这个迷宫的地图。
迷宫是 的网格,每个位置上要么是障碍,要么是路。障碍用 1
表示,路用 0
表示。坐标按照从上到下,从左到右编号,第 行第 列坐标为 。
定义两个格子联通当且仅当他们有公共边(四联通)。保证恰好存在一个 0
构成的联通块,并且你的出生点在这个联通块中。
实现细节
你需实现一个函数:
string find_out_map(int x,int y,int n)
参数为三个整数 ,返回值为一个字符串。其中 表示你的坐标为 (), 为地图大小。
你返回的字符串的第 位()为 1
表示地图的第 行,第 列是障碍;反之为路。
你可以调用以下函数以找出答案:
bool move_to(char position)
其中 position
为 WASD
中任一个,分别表示试图向上,左,下,右(分别为横坐标减一,纵坐标减一,横坐标加一,纵坐标加一)移动。若这个函数返回 1
,说明你成功向这个方向移动一格;否则说明这个方向上有障碍物,移动失败。注意除了最开始,你都不能从交互器获得当前坐标。假如 position
不合法,交互器的行为是未定义的。
保证地图开始时已确定,不会动态构造。保证第一列,第一行,第 列,第 行都是障碍。
你的函数可能会被调用多次,请注意初始化。
输入格式
这部分你无法读取,其中包含 与地图。输入文件以加密形式给出,并且交互器中也不会解密存储。
输出格式
没有输出。
提示
交互过程范例
假设地图为
1111
1011
1001
1111
最初传进来的参数为 。
下面是一种合法的交互过程:
选手调用 | 交互器返回 |
---|---|
move_to('S') |
1 |
move_to('D') |
|
move_to('W') |
0 |
返回 1111101110011111 |
Accepted |
数据范围与限制
本题时间限制 秒,空间限制 ,且保证交互库最坏情况下所用时间小于 秒、空间小于 。
首先交互题会受到和常规题相同的限制,如超时/超空间会导致整个测试点得零分。
在此基础上,当且仅当你报告的迷宫地图完全正确时你得分。设你调用函数最多的一次次数为 ,则你得到该测试点的满分,当且仅当 。
对于 的数据,。设调用你的函数的次数为 (相当于有多组数据,你需要初始化),则 。详细数据范围如下, 表示这个测试点分数为 分。
- 测试点 :。
- 测试点 :。
- 测试点 :。
- 测试点 :。保证仅存在恰好一个
1
构成的联通块。 - 测试点 :。
- 测试点 :。
- 测试点 :。
- 测试点 :。
- 测试点 :。
交互题怎么调试
本题交互过程太过简单,因此本题不提供交互器。请选手自行编写。
假如你不知道怎么做:只需编写一个程序,读入地图,并且实现 move_to
函数,然后把你的答案函数放于其中即可运行。