题目要求如下:
水下采矿机器人
某司研究出一种可以进行水下探测、采矿的机器人,该机器人可以在水下移动,进行资源探测,并且采集资源。现在请你实现该采集机器人的控制程序,控制机器人进行水下采矿。
如下所示为一个大小为 10*10 的采矿区域,对应样例中附带的 testcase00 。
(测试用例使用的区域固定为 10*10 ):
x 轴为从上往下方向, y 轴为从左往右方向。
黑色区域为障碍区 ( 数值为 9999999) ,里面不会有矿,采矿器也不能进入, 障碍区只会贴近区域底部或边缘,或者贴近另一个障碍;几个贴近的障碍必须有一个贴近区域底部或边缘 。
绿色区域为资源区(数值为 1-1000 ),里面有一定数量的资源,资源数不确定; 资源只会贴近区域底部或边缘,或者贴近障碍区 。
如下图,编号为 AB 的是正常的障碍, C 为不可能存在的障碍;编号为 1 、 2 、 3 、 4 的为正常的资源,不可能存在编号为 5 、 6 类型的资源。
除障碍区以及资源区,其他可通行区域用 0 表示。
红色为采矿机器人的出发点以及资源收集点, 坐标固定为( 0, 0 ) ,程序开始前采集机器人位于该点,采集 完成之后 需要 在该点卸下采集的资源 。用例最后检测该点采集的资源判定结果。
用户可以利用采集机器人提供的接口函数实现控制,接口函数如下:
/**
* 往特定的方向尝试执行移动操作,只移动一格
*
* @param direction 需要移动的方向:上 (0) 、下 (2) 、左 (1) 、右 (3)
* @return 操作结果:成功或失败,该方向是障碍物或区域底部 ( 或边缘 ) 时返回 false
*/
boolean move( int direction);
/**
*
* 检测当前区域可采集的资源数
*
* @return 当前区域可采集的资源数
*/
int detect();
/**
* 在当前位置执行采集操作
*
* @return 返回采集到的资源数
*
*/
int collect();
/**
* 卸下所有采集的资源
*
* @return 在规定的区域卸下则返回 true ,否则返回 false
*/
boolean offload();