劍指offer66 機械人的運動範圍

2021-10-10 14:30:55 字數 1236 閱讀 2688

思路:將地圖全部置1,遍歷能夠到達的點,將遍歷的點置0並令計數+1.這個思路在找前後左右相連的點很有用,比如leetcode中的海島個數問題/最大海島問題都可以用這種方法來求解。

# -*- coding:utf-8 -*-

class

solution

: count =

0def

movingcount

(self, threshold, rows, cols)

:# write code here

arr =[[

1for i in

range

(cols)

]for j in

range

(rows)

] self.findway(arr,0,

0, threshold)

return self.count

deffindway

(self,arr,i,j,k)

:if i <

0or j <

0or i >=

len(arr)

or j >=

len(arr[0]

):return

tempi =

list

(map

(int

,list

(str

(i))))

tempj =

list

(map

(int

,list

(str

(j))))

ifsum

(tempi)

+sum

(tempj)

>k or arr[i]

[j]!=1:

return

arr[i]

[j]=

0 self.count +=

1 self.findway(arr, i+

1, j, k)

self.findway(arr, i-

1, j, k)

self.findway(arr, i, j+

1, k)

self.findway(arr, i, j-

1, k)

劍指offer 66 機械人的運動範圍

地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 19。請...

劍指Offer(66) 機械人的運動範圍

地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 19。請...

劍指offer 66 機械人的運動範圍

1.題目描述地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 ...