題目描述:
地上有乙個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。請問該機械人能夠到達多少個格仔?
示例 1:
輸入:m = 2, n = 3, k = 1
輸出:3
示例 2:
輸入:m = 3, n = 1, k = 0
輸出:1
1 <= n,m <= 100
0 <= k <= 20
方法1:
主要思路:
(1)使用深度搜尋,確定返回條件,置好標誌位即可;
(2)注意題意只要求從0,0座標開始,不需要再統計其他座標的可能情況;
class
solution
while
(n)return count;
}//深度搜尋
void
dfs(vectorbool
>>
& sign,
int row,
int col,
int& count,
int& k)
++count;
//統計數量
//置標識
sign[row]
[col]
=true
;dfs
(sign,row-
1,col,count,k)
;dfs
(sign,row+
1,col,count,k)
;dfs
(sign,row,col-
1,count,k)
;dfs
(sign,row,col+
1,count,k);}
intmovingcount
(int m,
int n,
int k)
};
劍指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。但它不能進入...