地上有乙個m行n列的方格,從座標 [0,0] 到座標 [m-1,n-1] 。乙個機械人從座標 [0, 0] 的格仔開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 [35, 37] ,因為3+5+3+7=18。但它不能進入方格 [35, 38],因為3+5+3+8=19。請問該機械人能夠到達多少個格仔?
解題思路:
dfs函式的作用是計算機械人從[r,c]位置開始走,能夠走到的格仔數量。其退出條件為:(1)下標不符合條件。(2)該格仔已經被訪問過,計數過,因此不重複計數。(3)該點的數字和已經超過了閾值。
將count++,並置標誌位為真,從該點的上下左右的點開始走,並累計計數,最終的count值即為能走到的格仔數量。
class
solution
count++
; flag[r*col+c]
=true
;dfs
(k,row,col,r-
1,c,flag,count)
;dfs
(k,row,col,r+
1,c,flag,count)
;dfs
(k,row,col,r,c-
1,flag,count)
;dfs
(k,row,col,r,c+
1,flag,count)
;return;}
intmovingcount
(int m,
int n,
int k)
int res=0;
dfs(k,m,n,0,
0,flag,res)
;return res;
}int
countnum
(int num)
return cnt;}}
;
劍指offer13機械人的運動範圍
地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入...
劍指 Offer 13 機械人的運動範圍
題目描述 地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但...
劍指 Offer 13 機械人的運動範圍
地上有乙個m行n列的方格,從座標 0,0 到座標 m 1,n 1 乙個機械人從座標 0,0 的格仔開始移動,它每次可以向左 右 上 下移動一格 不能移動到方格外 也不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但它不能進入...