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

2021-10-08 16:14:01 字數 1044 閱讀 7094

題目描述

地上有乙個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

解題思路

1、題意理解,假設這個m行n列的方格為m x n 的矩陣,在這個矩陣中,機械人從座標(0,0)開始移動,通過檢查座標的數字之和是否大於k,來判斷它是否可以進入這個格仔(i,j),如果機械人可以進入這個格仔(i, j),再判斷它能否進入4個相鄰的格仔(i - 1, j) (i + 1, j) (i, j - 1) (i, j + 1),其中機械人不能重複進入同乙個格仔。

2、判斷行座標和列座標的數字之和大於k

int getdigitsum (

int number)

return sum;

}

3、建立乙個變數boolean visited = new boolean[m][n];來記錄已經訪問過的格仔,如果該格仔可以訪問visited[i][j] = true;**

class

solution

private

intdfs

(int i,

int j ,

int m,

int n,

int k ,

boolean visited[

])intgetdigitsum

(int number)

return sum;

}}

劍指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。但它不能進入...