循环路线测试问题

时间:2016-01-07 23:00:27

标签: python algorithm

这是问题陈述,我找到两个不同的解决方案,发布问题陈述和解决方案,我的问题是,想知道是否有必要检查是否连续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

Check If there exists a Circle

提前谢谢, 林

1 个答案:

答案 0 :(得分:2)

解决方案1和解决方案2似乎正在处理不同的问题。两者都涉及机器人进行一系列移动,但解决方案2的问题是机器人重复序列无限次。

  • 问题1.运行一次序列。机器人是否处于初始位置?

  • 问题2.如果序列无限运行,机器人的路线是否可以包含在有限的圆圈中?

第二个问题似乎更有趣,所以我在这里专注于它。

如解决方案2中所述,单次运行有两个效果:旋转(机器人朝向的方向)和位移(机器人移动到新位置)。

一般有三种轮换类型:

  • 无轮换。在这种情况下,您只需1次运行即可解决问题。

    • 如果置换为零,则a中可以包含无限次运行 有限圆。你只需绘制机器人的完整路线并计算出来 需要这个圈子的大小。

    • 如果位移非零,则无限次运行会导致无穷大 位移因此不能包含在有限的圆圈中。

  • 旋转90度(即一次向左或向右)。在这 如果你需要进行4次运行。在那之后,你将回到最初 方向,你可以使用相同的逻辑解决问题 无轮换情景。

  • 旋转180度(即左侧或右侧两次)。在这 例如,您需要进行2次运行才能返回初始方向。解决 以同样的方式。