《劍指offer》機(jī)器人的運(yùn)動范圍

題目描述:

地上有一個m行和n列的方格。一個機(jī)器人從坐標(biāo)0,0的格子開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進(jìn)入行坐標(biāo)和列坐標(biāo)的數(shù)位之和大于k的格子。 例如,當(dāng)k為18時,機(jī)器人能夠進(jìn)入方格(35,37),因為3+5+3+7 = 18。但是,它不能進(jìn)入方格(35,38),因為3+5+3+8 = 19。請問該機(jī)器人能夠達(dá)到多少個格子?

示例1
輸入

5,10,10

返回值

21

1、遞歸的方式實現(xiàn)

/**
 * 1、核心思路是機(jī)器人從(0,0)坐標(biāo)開始走,走成功一步就標(biāo)記為true, 遞歸當(dāng)前位置上下左右的點(diǎn), 返回 1 + 4個方向的值
 * 2、遞歸時判斷當(dāng)前位置可達(dá)的標(biāo)準(zhǔn)
 * 1)當(dāng)前位置在矩陣內(nèi) r < 0 || r >= rows || c < 0 || c >= cols
 * 2)當(dāng)前位置未被訪問過 dp[r][c]
 * 3)當(dāng)前位置坐標(biāo)的數(shù)位之和大于limit
 */
function movingCount(threshold, rows, cols) {
    // write code here
    // 創(chuàng)建一個二維數(shù)組
    let dp = Array.from({
        length: rows
    }, x => Array.from({
        length: cols
    }, y => 0));
    return countAll(threshold, rows, cols, 0, 0, dp)
}
// 計算
function countAll(limit, rows, cols, r, c, dp) {
    if (r < 0 || r >= rows || c < 0 || c >= cols || dp[r][c] || stepNum(r + '' + c) > limit) return 0;
    dp[r][c] = true
    // console.log(dp, "DP")
    return countAll(limit, rows, cols, r - 1, c, dp) +
        countAll(limit, rows, cols, r, c - 1, dp) +
        countAll(limit, rows, cols, r + 1, c, dp) +
        countAll(limit, rows, cols, r, c + 1, dp) + 1;
}
// 計算該位置坐標(biāo)的數(shù)位之和
function stepNum(str) {
    return str.split('').reduce(function (prev, curr, idx, arr) {
        return parseInt(prev) + parseInt(curr);
    });
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 二維數(shù)組中的查找 Q: 在一個二維數(shù)組中(每個一維數(shù)組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按...
    菜雞不得行閱讀 3,191評論 0 2
  • 1.二維數(shù)組的查找 在一個二維數(shù)組中(每個一維數(shù)組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從...
    linjiason閱讀 779評論 0 0
  • 題目:地上有一個m行和n列的方格。一個機(jī)器人從坐標(biāo)0,0的格子開始移動,每一次只能向左,右,上,下四個方向移動一格...
    qming_c閱讀 618評論 0 0
  • 劍指Offer筆試題(4) 題目來源:??途W(wǎng) 題目一 撲克牌順子 描述: LL今天心情特別好,因為他去買了一副撲...
    Torang閱讀 1,398評論 0 4
  • 題目五十一 請實現(xiàn)一個函數(shù),用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為...
    MichealXXX閱讀 317評論 0 0

友情鏈接更多精彩內(nèi)容