劍指 Offer 13 機械人的運動範圍

2021-10-18 16:41:15 字數 962 閱讀 5552

地上有乙個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。但它不能進入...