思路:將地圖全部置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 ...