Python 程序检查机器人能否到达目标位置


假设我们有一个机器人,目前位于 (0, 0) 位置(笛卡尔平面)。如果我们有一系列它可以执行的移动,包含 N(北)、S(南)、W(西)和 E(东)。我们必须检查它是否可以到达目标坐标 (x, y)。

因此,如果输入类似于 moves = ['N','N','E','E','S'], (x,y) = (2,1),则输出为 True。

为了解决这个问题,我们将遵循以下步骤:

  • temp_coord := [0,0]
  • 对于 moves 中的每个移动,执行以下操作:
    • 如果 move 等于 "N",则
      • temp_coord[1] := temp_coord[1] + 1
    • 否则,如果 move 等于 "S",则
      • temp_coord[1] := temp_coord[1] - 1
    • 否则,如果 move 等于 "E",则
      • temp_coord[0] := temp_coord[0] + 1
    • 否则,如果 move 等于 "W",则
      • temp_coord[0] := temp_coord[0] - 1
  • 如果 temp_coord[0] 等于 coord[0] 且 temp_coord[1] 等于 coord[1],则返回 True,否则返回 false。

让我们看看以下实现以获得更好的理解:

示例

 在线演示

class Solution:
   def solve(self, moves, coord):
      temp_coord = [0,0]
      for move in moves:
         if move == "N":
            temp_coord[1] += 1
         elif move == "S":
            temp_coord[1] -= 1
         elif move == "E":
            temp_coord[0] += 1
         elif move == "W":
            temp_coord[0] -= 1
      return temp_coord[0] == coord[0] and temp_coord[1] == coord[1]
ob = Solution()
moves = ['N','N','E','E','S']
coord = [2,1]
print(ob.solve(moves, coord))

输入

['N','N','E','E','S'], [2,1]

输出

True

更新于: 2020年10月7日

363 次查看

开启你的 职业生涯

完成课程获得认证

开始学习
广告