在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人可以接受下列三条指令之一:
"G":直走 1 个单位"L":左转 90 度"R":右转 90 度
机器人按顺序执行指令 instructions,并一直重复它们。
只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。
class Solution {
public:
bool isRobotBounded(string instructions) {
int direction=0; //代表方向, 0向北,1向西,2向南,3向东
int runnum=4; //循环运行次数4
int length[4]={0,0,0,0}; //记录四个方向上的步数
while(runnum--){
for(int i=0;i<instructions.length();i++){
if(instructions[i]=='L'){direction++;} //左拐弯 方向+
if(instructions[i]=='R'){direction--;} //右拐弯 方向-
if(direction < 0) {direction = direction + 4;} //如果方向变成负数, +4, 类似于一个4个方向循环移位的过程
if(direction > 3) {direction = direction % 4;} //如果方向大于4, 取模
if(instructions[i]=='G'){++length[direction];} //在某一方向上计步
}
if(length[0]-length[2]==0 && length[1]-length[3]==0){return true;}//向北走-向南走 && 向西走-向东走
}
return false;
}
};
runnum是4, 对于类似于"GL"这样的.
本文介绍了一个判断机器人在无限平面上是否能形成封闭循环路径的算法。通过解析一系列指令,包括直走、左转和右转,算法分析机器人是否会在执行完指令序列后回到原点或形成循环路径。
275

被折叠的 条评论
为什么被折叠?



