精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

回溯算法-機器人的運動范圍

開發 算法
有一個矩陣,機器人可以從坐標(0,0)的格子開始移動,它每次可以向左、右、上、下移動一格,但是不能進入行坐標和列坐標的數位之和大于K的格子,求這個機器人總共能走多少個格子以及它的行動軌跡。

[[415476]]

本文轉載自微信公眾號「神奇的程序員K」,作者神奇的程序員K。轉載本文請聯系神奇的程序員K公眾號。

前言

有一個矩陣,機器人可以從坐標(0,0)的格子開始移動,它每次可以向左、右、上、下移動一格,但是不能進入行坐標和列坐標的數位之和大于K的格子,求這個機器人總共能走多少個格子以及它的行動軌跡。

本文就跟大家分享下這個問題的解決方案 ,歡迎各位感興趣的開發者閱讀本文。

實現思路

在上一篇講解尋找矩陣中的路徑文章中,我們學會了使用回溯算法來訪問矩陣中的格子,本文要討論的這個問題在訪問格子之前做了一層判斷,如果滿足條件就能進入,不滿足就無法進入。

我們要做的這層判斷為:計算出待訪問格子的坐標的數位之和,如果其大于K(最大活動范圍)則不能訪問。

數位之和:即取出數字中每個位置的值,將其相加得出的結果。例如:19的數位之和就是1 + 9 = 10。

判斷當前格子是否已訪問

首先,我們需要創建一個與原矩陣大小相同的矩陣,用于標識機器人是否已走這個格子。

在js中無法直接創建指定大小的二維數組,創建思路如下:

  • 以矩陣的長度為大小創建一個數組
  • 遍歷創建好的數組,再以矩陣的第0號數組的長度為大小創建數組,賦值給遍歷到的每一項。

判斷格子是否可進入

在訪問格子時,我們需要判斷下要訪問的格子是否能進入,我們需要計算出行坐標與列坐標的數位之和,然后將其相加,判斷相加后的結果是否大于機器人的最大活動范圍(K)。

計算數位之和有兩種做法:

  • 將數字轉為字符串,遍歷取出每個字符將其轉為數字后再相加
  • 對數字進行模運算,將其結果相加,再對數字本身進行/10操作,直至數字小于等于0

開始移動機器人

移動機器人時,我們需要7個參數:

  • 矩陣的總行數
  • 矩陣的總列數
  • 即將進入格子的行坐標
  • 即將進入格子的列坐標
  • 最大活動范圍
  • 訪問標識矩陣
  • 路徑矩陣

首先,我們需要進行邊界條件判斷(遞歸的終止條件),條件滿足代表該格子無法訪問,可行走格子為0(直接返回0):

  • 待訪問格子的行坐標大于矩陣的總行數
  • 待訪問格子的行坐標小于0
  • 待訪問格子的列坐標大于矩陣的總列數
  • 待訪問格子的列坐標小于0
  • 當前格子已經被訪問
  • 當前格子不能進入

如果上述條件都滿足則表示當前格子可以訪問,保存當前格子中的值到行動軌跡中,標識當前格子為已訪問狀態,已行走格子數+1,并遞歸嘗試當前格子的其它四個方向的格子能否進入。

當遞歸棧清空后,我們也就得到了機器人總共可以進入的格子總數以及它的行動軌跡。

實現代碼

接下來,我們將上述思路轉換為TypeScript代碼。

格子能否進入函數

我們先來看下判斷當前格子能否進入的函數實現,如下所示:

  1.   /** 
  2.    * 判斷機器人能否進入目標格子 
  3.    * @param row 行坐標 
  4.    * @param col 列坐標 
  5.    * @param target 臨界點 
  6.    * @private 
  7.    */ 
  8.   private checkPath(row: number, col: number, target: number): boolean { 
  9.     // 兩坐標的數位之和必須小于等于臨界點 
  10.     return sumOfDigits(row) + sumOfDigits(col) <= target; 
  11.   } 
  12.  
  13. // 轉字符串實現 
  14. export function sumOfDigits(target: number): number { 
  15.   let finalVal = 0; 
  16.   const computeVal = target.toString(); 
  17.   for (let i = 0; i < computeVal.length; i++) { 
  18.     finalVal += Number(computeVal[i]); 
  19.   } 
  20.   return finalVal; 
  21.  
  22. // 數位之和 - 模運算實現 
  23. export function sumOfDigitsForModular(target: number): number { 
  24.   let finalVal = 0; 
  25.   while (target > 0) { 
  26.     finalVal += Math.floor(target % 10); 
  27.     target /= 10; 
  28.   } 
  29.   return finalVal; 

移動機器人函數

移動機器人至指定格子實現代碼如下所示:

  1. /** 
  2.  * 開始移動機器人 
  3.  * @param rows 矩陣總行數 
  4.  * @param cols 矩陣總列數 
  5.  * @param row 待進入格子的行坐標 
  6.  * @param col 待進入格子的列坐標 
  7.  * @param threshold 最大活動范圍 
  8.  * @param isVisited 訪問標識矩陣 
  9.  * @param matrix 路徑矩陣 
  10.  * @private 
  11.  */   
  12. rivate startMoving( 
  13.   rows: number, 
  14.   cols: number, 
  15.   row: number, 
  16.   col: number, 
  17.   threshold: number, 
  18.   isVisited: Array<Array<boolean>>, 
  19.   matrix: Array<Array<T>> 
  20. ): number { 
  21.   // 邊界條件判斷 
  22.   if ( 
  23.     row >= rows || 
  24.     row < 0 || 
  25.     col >= cols || 
  26.     col < 0 || 
  27.     isVisited[row][col] || 
  28.     !this.checkPath(row, col, threshold) 
  29.   ) { 
  30.     return 0; 
  31.   } 
  32.   // 記錄當前訪問的格子內容 
  33.   this.path += `${matrix[row][col]} -> `; 
  34.   // 標識當前格子已被訪問 
  35.   isVisited[row][col] = true
  36.   // 格子訪問數量+1 
  37.   return ( 
  38.     1 + 
  39.     this.startMoving(rows, cols, row + 1, col, threshold, isVisited, matrix) + 
  40.     this.startMoving(rows, cols, row, col + 1, threshold, isVisited, matrix) + 
  41.     this.startMoving(rows, cols, row - 1, col, threshold, isVisited, matrix) + 
  42.     this.startMoving(rows, cols, row, col - 1, threshold, isVisited, matrix) 
  43.   ); 

主函數

最后,我們來看下主函數的實現,如下所示:

  1. /** 
  2.  * 題目: 
  3.  * 地上有一個m行n列的方格。 
  4.  * 一個機器人從坐標(0,0)的格子開始移動, 
  5.  * 它每次可以向左、右、上、下移動一格,但不能進入行坐標和列坐標的數位之和大于k的格子。 
  6.  * 例如,當k為18時,機器人能夠進入方格 (35,37),因為3+5+3+7=18。 
  7.  * 但它不能進入方格(35,38),因為3+5+3+8=19. 請問該機器人能夠到達多少個格子? 
  8.  * @param matrix 矩陣 
  9.  * @param threshold 臨界點(最大活動范圍) 
  10.  */ 
  11. public movingCount(matrix: Array<Array<T>>, threshold = 0): number { 
  12.   if (threshold < 0 || matrix.length <= 0) { 
  13.     return 0; 
  14.   } 
  15.   // 獲取方格的總行數與總列數 
  16.   const rows = matrix.length; 
  17.   const cols = matrix[0].length; 
  18.   // 創建標記數組,用于標識格子是否被訪問 
  19.   const isVisited: Array<Array<boolean>> = new Array(rows); 
  20.   for (let i = 0; i < isVisited.length; i++) { 
  21.     isVisited[i] = new Array(cols); 
  22.   } 
  23.   // 從0,0位置開始移動,計算總的移動格子數量 
  24.   return this.startMoving(rows, cols, 0, 0, threshold, isVisited, matrix); 

完整代碼請移步:Backtracking.ts#L80

編寫測試用例

接下來,我們構造一個矩陣來驗證下上述代碼能否正確執行,如下所示:

  1. const pathArr = [ 
  2.   ["a""b""t""g"], 
  3.   ["c""f""c""s"], 
  4.   ["j""d""e""h"
  5. ]; 
  6.  
  7. const backtracking = new Backtracking<string>(); 
  8. const totalCount = backtracking.movingCount(pathArr, 4); 
  9. const path = backtracking.path; 
  10. console.log( 
  11.   "機器人總共可走的格子總數為: "
  12.   totalCount, 
  13.   ",運動軌跡為: "
  14.   path.substr(0, path.length - 3) 
  15. ); 

執行結果如下所示:

 

責任編輯:武曉燕 來源: 神奇的程序員K
相關推薦

2021-10-20 10:48:30

機器人人工智能算法

2019-06-26 23:27:33

機器人物聯網應用IOT

2020-10-15 15:42:00

人工智能

2015-12-10 21:49:32

IM機器人

2025-08-18 18:27:09

機器人中國足球票價

2020-09-24 10:49:50

機器人人工智能系統

2021-07-22 10:17:55

加密機器人加密貨幣機器人

2021-08-19 15:44:20

機器人人工智能機器學習

2015-07-28 09:36:11

機器人

2022-07-28 11:26:41

人工智能機器人

2017-03-28 12:21:21

機器人定義

2012-03-08 09:42:16

開源軟件Linux

2020-04-09 09:56:55

機器人導航框架

2021-04-08 09:33:02

機器人物聯網技術物聯網

2021-07-19 09:11:05

機器人人工智能算法

2021-03-25 09:25:55

機器人人工智能系統

2019-11-06 11:40:19

機器人人工智能系統
點贊
收藏

51CTO技術棧公眾號

日本午夜精品久久久久| www.五月婷| 91久久电影| 精品精品欲导航| 国内外成人免费激情视频| 青春有你2免费观看完整版在线播放高清| 另类天堂av| 久久激情视频免费观看| 91精品啪在线观看国产| 欧美大电影免费观看| 中文字幕亚洲精品在线观看| 成人综合色站| 老熟妇一区二区三区啪啪| 欧美在线91| 亚洲人成绝费网站色www| 亚洲妇熟xx妇色黄蜜桃| 亚洲一区资源| 亚洲一区在线免费观看| 日本欧美色综合网站免费| av在线资源观看| 久久欧美肥婆一二区| 久久综合伊人77777蜜臀| 色天使在线视频| 国产精品欧美一区二区三区不卡| 日韩欧美国产骚| 人人妻人人澡人人爽欧美一区 | 久久影院午夜精品| 亚洲欧美自拍偷拍色图| 欧美国产综合视频| 午夜精品久久久久久久第一页按摩| 日韩电影在线免费看| 97在线看福利| 久久9999久久免费精品国产| 国产精品毛片久久| 伊人伊人伊人久久| 97香蕉碰碰人妻国产欧美| 国产午夜久久av| 欧美日韩精品一区二区三区四区 | 成人黄色网址在线观看| 91香蕉亚洲精品| 国产精品51麻豆cm传媒| 午夜亚洲激情| 26uuu亚洲伊人春色| 久久国产在线视频| 欧美一区综合| 欧美精品在线免费观看| 日本一级片免费| 欧美a级成人淫片免费看| 亚洲视频在线免费观看| 人妻丰满熟妇aⅴ无码| swag国产精品一区二区| 日韩欧美在线网站| 韩国三级在线播放| 欧美专区一区| 日韩欧美亚洲国产另类| 超碰91在线播放| 日韩高清一区| 精品久久久久久久人人人人传媒| 中文字幕无码毛片免费看| 国产午夜亚洲精品一级在线| 欧美一级在线观看| 日本女人黄色片| 第四色在线一区二区| 日韩免费成人网| 亚洲av成人精品一区二区三区| 伊人久久影院| 日韩av综合中文字幕| av无码一区二区三区| 亚洲a级精品| 国产一区二区三区久久精品 | 亚洲欧美精品午睡沙发| 看全色黄大色大片| wwww在线观看免费视频| 无码av免费一区二区三区试看 | 久久av资源网| 91视频九色网站| 黄色av一区二区三区| 成人av网站在线观看免费| 蜜桃麻豆www久久国产精品| 欧美18xxxxx| 中文字幕一区二区三区四区| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 久久机热这里只有精品| 国产精品一卡| 国产精品美女www| 精品二区在线观看| 97久久精品人人爽人人爽蜜臀| 任我爽在线视频精品一| 老司机在线看片网av| 亚洲国产日韩在线一区模特| 成人免费观看视频在线观看| 精品176极品一区| 精品国产自在久精品国产| 黄色性生活一级片| 成人在线免费视频观看| 欧美极品第一页| 久操视频在线免费观看| 国产综合成人久久大片91| 国产一区二区三区av在线 | 欧美精品一二区| 岛国av中文字幕| 国产乱码字幕精品高清av| 久久精品国产美女| 成人三级网址| 色综合久久天天| 日本黄色一级网站| 精品国产一区二区三区av片| 欧美精品第一页在线播放| 中文字幕在线播放av| 岛国精品在线播放| 亚洲欧美成人一区| 欧美私密网站| 欧美xxxxxxxx| 国产福利视频网站| 日日摸夜夜添夜夜添亚洲女人| 97久久人人超碰caoprom欧美| 韩日在线视频| 亚洲成人久久影院| 欧美人与性动交α欧美精品| 日韩精品一卡| 日本欧美在线视频| 日本激情一区二区| 亚洲欧美日韩国产综合| 熟妇人妻无乱码中文字幕真矢织江| av在线亚洲色图| 九九热这里只有精品6| 亚洲 国产 日韩 欧美| 97aⅴ精品视频一二三区| 91精品国产毛片武则天| 日韩综合av| 国产一区二区三区在线| 特级西西444www大精品视频免费看| 国产不卡视频一区| 免费观看黄色的网站| 日韩不卡在线| 国产午夜精品一区理论片飘花| 久草国产精品视频| 不卡av在线免费观看| 欧美日韩视频免费| 天堂va欧美ⅴa亚洲va一国产| 久久精品久久久久电影| 一本一道精品欧美中文字幕| 中文字幕不卡三区| 日本免费观看网站| 精品国产乱码久久久久久果冻传媒| 日韩美女免费线视频| 日韩午夜影院| 在线观看视频欧美| 一级黄色录像毛片| 日本不卡一二三区黄网| 日产精品一线二线三线芒果| 韩国美女久久| 一区二区欧美亚洲| 在线观看中文字幕码| 国产精品免费av| 日韩在线一区视频| 亚洲国产日韩欧美在线| 91青青草免费观看| 伦理av在线| 日韩国产高清视频在线| 成人毛片18女人毛片| 久久久久久免费网| 成人羞羞国产免费网站| 国产一区二区三区四区大秀| 国产精品久久久久7777婷婷| 网友自拍视频在线| 日韩午夜精品视频| 日韩aaaaaa| 久久久综合激的五月天| 美女黄色片视频| 国产精品97| 国产日韩在线一区二区三区| 91精品论坛| 俺去亚洲欧洲欧美日韩| 国模私拍视频在线| 日本道免费精品一区二区三区| 国产精成人品免费观看| 另类中文字幕网| 青青青在线观看视频| 欧美日韩导航| 国产日韩专区在线| a在线视频v视频| 中日韩美女免费视频网站在线观看| 91丨porny丨在线中文| 亚洲在线视频网站| 中文字幕网站在线观看| 激情综合色丁香一区二区| 久久手机在线视频| 国产a久久精品一区二区三区 | av一区二区高清| 91丝袜脚交足在线播放| 亚洲黄色免费看| 久青草国产97香蕉在线视频| 艳母动漫在线看| 欧美一区二区免费视频| 在线观看 亚洲| 一区二区三区四区中文字幕| 精品无码人妻一区| 国产精品一区二区三区99| 激情综合在线观看| 亚洲国产日韩欧美在线| 青青草国产精品| 91午夜精品| 国产精品无码专区在线观看| av影视在线| 久久亚洲国产精品成人av秋霞| 天天操天天操天天干| 欧美日韩精品一二三区| 精品在线播放视频| 亚洲狠狠丁香婷婷综合久久久| 中文字幕一区二区三区人妻| 国产精品亚洲成人| 中文久久久久久| 免费中文字幕日韩欧美| 屁屁影院ccyy国产第一页| 久久蜜桃av| 人偷久久久久久久偷女厕| 风间由美一区二区av101| 91九色在线视频| 青青热久免费精品视频在线18| 97在线视频免费播放| xvideos国产在线视频| 中文字幕v亚洲ⅴv天堂| 免费毛片在线| 日韩成人av网| 日本免费一区视频| 日韩精品一区二区在线观看| 国产在成人精品线拍偷自揄拍| 色偷偷一区二区三区| 日韩成年人视频| 亚洲不卡av一区二区三区| 中文字幕在线2021| 亚洲人成网站色在线观看| 天天干天天操天天拍| 久久久久国产精品人| 性欧美成人播放77777| gogogo免费视频观看亚洲一| 亚洲精品久久一区二区三区777| 国产精品一区一区| 蜜桃视频无码区在线观看| 国产在线视频精品一区| 日本中文字幕精品—区二区| 日本美女一区二区| 亚洲综合激情网| 2019日韩中文字幕mv| 我不卡伦不卡影院| 神马影院午夜我不卡影院| 色狠狠久久av综合| 精品免费一区二区三区蜜桃| 岛国av一区| 极品校花啪啪激情久久| 国产精品男女| 精品欧美一区二区三区久久久| 国产女人18毛片水真多18精品| 97自拍视频| 第四色在线一区二区| 国产91亚洲精品一区二区三区| 久久伊人精品| 国产精品高清一区二区三区| 国产精品任我爽爆在线播放| 激情伦成人综合小说| 久久午夜影院| 日本不卡一区| 91免费精品| 97超碰在线视| 国产欧美亚洲一区| 亚洲天堂av线| 国产资源精品在线观看| 日本wwwwwww| 久久欧美一区二区| 特黄一区二区三区| 亚洲激情在线播放| 精品欧美一区二区三区免费观看| 日韩欧美在线中文字幕| 少妇一级淫片日本| 欧美一级片在线看| 五月婷婷开心中文字幕| 一区二区av在线| 日本高清在线观看| 欧美一级大胆视频| 四虎国产精品免费久久5151| 成人欧美一区二区三区视频 | 亚洲第一在线| 无码人妻丰满熟妇区毛片| 美女视频黄a大片欧美| 人妻巨大乳一二三区| 久久五月婷婷丁香社区| 小早川怜子一区二区的演员表| 偷拍亚洲欧洲综合| 在线播放成人av| 亚洲国产欧美久久| 日本三级视频在线观看| 久久久亚洲国产天美传媒修理工| 另类专区亚洲| 痴汉一区二区三区| 青青草国产免费一区二区下载 | 日韩三级久久久| 亚洲成a人片综合在线| 中文字幕乱码中文字幕| 精品国产免费人成电影在线观看四季| 国产女主播在线直播| 九色91av视频| 精品国产欧美日韩一区二区三区| 成人av资源网| 91成人国产| 国产裸体免费无遮挡| 成人综合婷婷国产精品久久免费| 天堂资源在线视频| 香蕉视频免费版| 久久资源综合| 亚洲三级一区| 99精品热6080yy久久| 亚洲免费av一区| 久久嫩草精品久久久久| 精品视频一区二区在线观看| 欧美在线小视频| 日韩一级片免费| 欧美成人免费视频| 99久久伊人| 欧美精品一区在线发布| 亚洲视频高清| 久久精品国产露脸对白| 国产亚洲短视频| 日本中文在线播放| 欧美精品一区二区三区很污很色的 | 亚洲人成777| 久久精品国产视频| 亚洲精品中文字幕| av免费观看久久| 欧美激情成人| 一区二区xxx| 久久综合久久综合久久| 劲爆欧美第一页| 欧美剧情片在线观看| 免费福利在线观看| 高清欧美一区二区三区| 国产一区二区三区精品在线观看 | 少妇一区二区三区| www.xxx麻豆| 国产iv一区二区三区| 精品国产精品国产精品| 欧美日韩国产一级片| 国产露出视频在线观看| 欧美主播福利视频| 亚洲大片精品免费| 成人综合视频在线| 2017欧美狠狠色| 成人免费区一区二区三区| 亚洲第一网站男人都懂| av中文字幕在线看| 狠狠色综合网站久久久久久久| 99视频+国产日韩欧美| 国模私拍在线观看| 精品久久中文字幕| 欧美日韩影视| 国产精品高潮呻吟久久av野狼 | 天干夜夜爽爽日日日日| 日韩精品欧美激情| 中文字幕乱码在线播放| 欧美精品一区三区在线观看| 日韩电影在线看| 91久久久久久久久久久久久久 | 岛国av一区二区| 国产一二三在线观看| 国产精自产拍久久久久久| 天天影视欧美综合在线观看| 亚洲天堂一区二区在线观看| 亚洲影视在线播放| 四虎影视在线观看2413| 国产精品白嫩初高中害羞小美女| 日韩精品久久| 肉丝美足丝袜一区二区三区四| 精品日韩中文字幕| 超碰97在线免费观看| 亚洲一区二区三区sesese| 亚洲午夜av| 第一次破处视频| 91精品国产色综合久久久蜜香臀| 国产精品69xx| 三级三级久久三级久久18| 国精产品一区一区三区mba桃花| 精品少妇久久久久久888优播| 亚洲毛片在线看| 麻豆精品在线| 久久久久久久久久久视频| 国产精品免费aⅴ片在线观看| 国内精品国产成人国产三级| 欧美一区二区三区四区在线| 91日韩免费| 极品白嫩丰满美女无套| 欧美日本不卡视频| 9999热视频在线观看| 区一区二区三区中文字幕| 国产精品一区不卡| 青青视频在线免费观看| 美乳少妇欧美精品| 精品久久视频| 麻豆精品国产传媒av| 欧美日韩精品一区二区在线播放 | 国产综合视频在线观看|