劍指Offer對答如流系列 機械人的運動範圍

2021-10-02 06:30:38 字數 1246 閱讀 5422

地上有乙個m行n列的方格。乙個機械人從座標(0, 0)的格仔開始移動,它每一次可以向左、右、上、下移動一格,但不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格(35, 37),因為3+5+3+7=18。但它不能進入方格(35, 38),因為3+5+3+8=19。請問該機械人能夠到達多少個格仔?

這道題與上一道面試題太相似了 面試題11:矩陣中的路徑,我有點不太理解,劍指offer這本書中為啥有兩道這麼相似的題。

看了看本題考點意思是:

演算法思想基本上保持一致,直接公布解答吧。不懂的參考 面試題11:矩陣中的路徑,這個說的已經非常詳細了。

/**

* @param threshold 規定限制的行座標和列座標的數字之和

* @param rows 行數

* @param cols 列數

* @return 格仔的數量

*/public

intmovingcount

(int threshold,

int rows,

int cols)

// 解空間

private

intmovingcountcore

(int threshold,

int rows,

int cols,

int row,

int col,

boolean

isvisited)

// 記錄已訪問

isvisited[row * cols + col]

=true

;return1+

movingcountcore

(threshold, rows, cols, row -

1, col, isvisited)

+movingcountcore

(threshold, rows, cols, row +

1, col, isvisited)

+movingcountcore

(threshold, rows, cols, row, col -

1, isvisited)

+movingcountcore

(threshold, rows, cols, row, col +

1, isvisited);}

private

intcal

(int num)

return sum;

}

劍指Offer對答如流系列 醜數

我們把只包含質因子2 3和5的數稱作醜數 ugly number 求按從小到大的順序的第n個醜數。例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。判斷乙個數是不是醜數,最容易想到的方法就是讓這個數不斷除以2,3,5。對於第n個醜數,只要從1開始,依次判斷每個數是不...

劍指Offer對答如流系列 剪繩子

給你一根長度為n繩子,請把繩子剪成m段 m n都是整數,n 1並且m 1 每段的繩子的長度記為k 0 k 1 k m k 0 k 1 k m 可能的最大乘積是多少?例如當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到最大的乘積18。遇到問題,先分析問題,由分析的結果確定所運用的演...

劍指Offer對答如流系列 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 push 和 pop均容易實現。主要就是min函式的定義,如果要通過操作push和pop操作獲取最小元素時間複雜度為o 1 基本上是不可能的。如果我們另外定義乙個成員...