这是问题陈述,我找到两个不同的解决方案,发布问题陈述和解决方案,我的问题是,想知道是否有必要检查是否连续4次运行会产生圆?为什么要检查连续4次运行,除了其他数字 - 比如连续3次运行?感谢。
问题陈述
给定机器人的一系列动作,检查序列是否为圆形。如果机器人的第一个和最后一个位置相同,则一系列移动是圆形的。可以采取以下措施。
function RotationsCtrl (Rotations, $scope, $rootScope, $state) {
var vm = this;
vm.data = Rotations;
}
示例:
G - Go one unit
L - Turn left
R - Turn right
解决方案1
http://www.geeksforgeeks.org/check-if-a-given-sequence-of-moves-for-a-robot-is-circular-or-not/
解决方案2
提前谢谢, 林答案 0 :(得分:2)
解决方案1和解决方案2似乎正在处理不同的问题。两者都涉及机器人进行一系列移动,但解决方案2的问题是机器人重复序列无限次。
问题1.运行一次序列。机器人是否处于初始位置?
问题2.如果序列无限运行,机器人的路线是否可以包含在有限的圆圈中?
第二个问题似乎更有趣,所以我在这里专注于它。
如解决方案2中所述,单次运行有两个效果:旋转(机器人朝向的方向)和位移(机器人移动到新位置)。
一般有三种轮换类型:
无轮换。在这种情况下,您只需1次运行即可解决问题。
如果置换为零,则a中可以包含无限次运行 有限圆。你只需绘制机器人的完整路线并计算出来 需要这个圈子的大小。
如果位移非零,则无限次运行会导致无穷大 位移因此不能包含在有限的圆圈中。
旋转90度(即一次向左或向右)。在这 如果你需要进行4次运行。在那之后,你将回到最初 方向,你可以使用相同的逻辑解决问题 无轮换情景。
旋转180度(即左侧或右侧两次)。在这 例如,您需要进行2次运行才能返回初始方向。解决 以同样的方式。