原題鏈結
地上有乙個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
主要思路:
終止條件判斷
判斷當前位置是否符合 數字和<= k 的條件,若符合,執行如下流程:
1.設定該位置已被訪問 visited=true
2.可達點數量 res++
3.向下向右搜尋
**:
class
solution
public
void
dfs(
int k,
int i,
int j,
boolean
visited)
}}
複雜度分析:
主要思路:
將(0,0) 節點加入佇列
當佇列不空時 ,執行如下操作:
1.取出隊頭元素
2.判斷隊頭元素是否被訪問,或越界,或數字和》k ,若是 continue
3.vis=true,res++
4.將右和下兩個節點加入佇列
**:
class
solution);
int res =0;
boolean
visited =
newboolean
[m][n]
;while
(!queue.
isempty()
)); queue.
add(
newint
);}return res;
}}
複雜度分析:
面試題13. 機械人的運動範圍( dfs / bfs ,清晰**)
劍指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。但它不能進入...