PHP实现机器人的运动范围
在PHP中实现一个机器人的运动范围,可以通过模拟机器人在一个二维网格中的移动来完成。以下是一个简单的例子,假设机器人只能向右('R')、向下('D')、向左('L')或向上('U')移动:
function robotSim($commands, $obstacles, $limit) {
// 初始化网格和机器人位置
$grid = array_fill(0, $limit, array_fill(0, $limit, 0));
foreach ($obstacles as $obstacle) {
$grid[$obstacle[0]][$obstacle[1]] = 1;
}
$x = 0;
$y = 0;
$maxDistance = 0;
foreach ($commands as $command) {
switch ($command) {
case 'R': // 向右移动
$x++;
break;
case 'D': // 向下移动
$y++;
break;
case 'L': // 向左移动
$x--;
break;
case 'U': // 向上移动
$y--;
break;
}
// 如果碰到障碍物,则不更新最远距离
if ($grid[$x][$y] == 1) {
$x -= ($command == 'R' ? 1 : -1);
$y -= ($command == 'D' ? 1 : -1);
} else {
$grid[$x][$y] = 1; // 标记为已访问
$maxDistance = max($maxDistance, max($x, $y));
}
}
return $maxDistance;
}
// 示例
$commands = "URRRDDD";
$obstacles = [[2, 2]];
$limit = 3;
echo robotSim(str_split($commands), $obstacles, $limit); // 输出: 2
这个函数robotSim
接受三个参数:$commands
是一个表示机器人指令的字符串,$obstacles
是障碍物的坐标列表,$limit
是网格的大小。函数返回机器人可以到达的最大距离。
评论已关闭