Python程式設計練習 機械人行走

2021-09-29 02:51:58 字數 1350 閱讀 3621

1.leetcode974 模擬行走機械人

控制機械人行走的基本思想是:先更新方向變化,再以 步長1 更新座標。

需要注意的是,原題解中提到:必須注意使用 集合 set 作為對障礙物使用的資料結構,以便我們可以有效地檢查下一步是否受阻。如果不這樣做,我們檢查障礙點的速度可能會慢大約 10000 倍。

class solution:

def robotsim(self, commands, obstacles):

""":type commands: list[int]

:type obstacles: list[list[int]]

:rtype: int

"""ans=0

d=f=

obstacleset = set(map(tuple, obstacles)) #關鍵步

direction='+y'

direction_change=

x=0y=0

for i in commands:

if i>0:

for k in range(i):

d[direction]+=1

coordinate = (d['+x'] - d['-x'], d['+y'] - d['-y'])

if coordinate in obstacleset:

d[direction]-=1

break

else:

direction=direction_change[direction+str(i)]

ans=max(([d['+x']-d['-x'],d['+y']-d['-y']][0]**2+[d['+x']-d['-x'],d['+y']-d['-y']][1]**2),ans)

return(ans)

2.leetcode62 不同路徑

排列組合思想,機械人一共要行走m+n-2步,其中有m-1步要向下,計算下行組合的數量即為不同路徑的數量。

class solution:

def uniquepaths(self, m, n):

""":type m: int

:type n: int

:rtype: int

"""# c^(m-1)_(m+n-2)

res = 1

for i in range(m, m+n-1):

res *= i

res /= i-m+1

return int(res)

#**源於leetcode提交記錄提交用時最少的範例。

Pythn程式設計練習 機械人行走

需要注意的是,原題解中提到 必須注意使用 集合 set 作為對障礙物使用的資料結構,以便我們可以有效地檢查下一步是否受阻。如果不這樣做,我們檢查障礙點的速度可能會慢大約 10000 倍。class solution def robotsim self,commands,obstacles type ...

機械人行走

某少年宮引進了一批機械人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種 左轉 記為l 右轉 記為r 向前走若干厘公尺 直接記數字 例如,我們可以對小車輸入如下的指令 15l10r5lrr10r20 則,小車先直行15厘公尺,左轉,再走10厘公尺,再右轉,不難看出,對於此指令...

藍橋杯 機械人行走

某少年宮引進了一批機械人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種 左轉 記為l 右轉 記為r 向前走若干厘公尺 直接記數字 例如,我們可以對小車輸入如下的指令 15l10r5lrr10r20 則,小車先直行15厘公尺,左轉,再走10厘公尺,再右轉,不難看出,對於此指令...