首页 > 解决方案 > 如何使用四个基本方向找到返回起点的最小步数

问题描述

我做了一个在线测试,但我无法理解其中一个问题:想象一下,有一个机器人只能沿着北、南、西、东 4 个基本方向移动。将命令传递为“N”、“S”、“W”或“E”,每个命令对应一个步骤。问题是关于编写一个函数,该函数返回将机器人返回到起始位置所需的最少步数。例如,传递命令“NW”,返回值应该是2。传递命令“NWS”,返回值1等等。如果机器人发现自己已经在起始位置,则返回值将为 0(或表示“起始位置”的字符串)。

这个问题应该是针对初学者的,但老实说,我很难解决它。如果有人知道如何编写这样的程序,将不胜感激。谢谢。

标签: python-3.x

解决方案


state-machine您可以使用复数模拟 a (使用格式a+bj,其中j是 -1 的平方根)。

1) 开始start_val = 0

2) 将坐标与复杂操作关联:

  • N+1

  • S-1

  • E+j
  • W-j

3) 然后处理给定的字符串,将每个字符一个一个地映射到 上start_val。例如:

  • 给定字符串“NW”,程序将计算:
    • start_val += 1
    • start_val -= j
    • 然后start_val = 1+1j
  • 给定字符串“NWS”,程序将计算:
    • start_val += 1
    • start_val += j
    • start_val -= 1
    • 然后start_val = 0-1j

4) 之后,将 的部和相加。在上面的示例中,结果分别为 2 和 1。你能看到吗?start_val

我希望这可以作为您的解决方案。


推荐阅读