精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲系列中文字幕| 狠狠躁夜夜躁久久躁别揉| 国产精品一区二区三区久久| 中文国语毛片高清视频| 亚洲超碰在线观看| 在线一区二区视频| 中文精品无码中文字幕无码专区| 日本一二三区在线视频| 久久久蜜桃一区二区人| 欧美成人精品不卡视频在线观看| 超碰男人的天堂| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 日本欧美在线| 亚洲福利一区二区三区| 亚洲国产一区二区精品视频| 日韩在线一区二区三区四区| 青青草国产精品97视觉盛宴| 欧美制服第一页| 中文字幕亚洲欧美日韩| 欧洲杯什么时候开赛| 亚洲白虎美女被爆操| 欧美在线aaa| 天堂中文av在线资源库| 一区二区三区影院| 亚洲欧美久久234| 五月天婷婷社区| 国产精品乡下勾搭老头1| 国产精品91视频| 精品国产免费观看| 欧美福利网址| 日韩一中文字幕| 国产精品久久久久无码av色戒| 超碰97久久国产精品牛牛| 51精品国自产在线| 激情黄色小视频| 草莓视频成人appios| 欧美性色19p| 日韩欧美视频网站| 2021天堂中文幕一二区在线观| 亚洲视频综合在线| 欧美一级免费在线观看| 午夜在线视频播放| 欧美精彩视频一区二区三区| 欧美连裤袜在线视频| 视频国产一区二区三区| 99re6这里只有精品视频在线观看| 成人综合色站| www.欧美国产| 国产成人无遮挡在线视频| 91视频九色网站| 艳妇乳肉豪妇荡乳av| 麻豆一区二区三| 国产欧美最新羞羞视频在线观看| 免费无码国产精品| 天堂午夜影视日韩欧美一区二区| 57pao成人国产永久免费| 日韩精品视频免费播放| 国产情侣久久| 欧美亚洲另类视频| 日韩熟女一区二区| 久久精品综合| 国产精品日韩在线播放| 亚洲视屏在线观看| 久久 天天综合| 成人中文字幕在线观看| 99视频国产精品免费观看a| 国产毛片精品一区| 成人免费视频视频在| 熟妇人妻一区二区三区四区 | 国产精品实拍| 一区二区三区在线免费视频| www.国产亚洲| 色戒汤唯在线| 91极品美女在线| 老司机午夜性大片| 日韩成人视屏| 亚洲精品美女网站| 一区二区伦理片| 91精品国产调教在线观看| 欧美裸体男粗大视频在线观看| 欧美黑人精品一区二区不卡| 亚洲欧洲视频| 国产精品久久久久久亚洲影视| 一级爱爱免费视频| 国产激情一区二区三区| 国产一区二区在线网站| 国产日本在线| 尤物在线观看一区| 黑人糟蹋人妻hd中文字幕 | 91福利视频网站| 精品久久久三级丝袜| 91蜜桃在线观看| 国产精品免费福利| 国产精品久久久久久免费免熟| 国产精品99久久久久久久vr| 激情视频在线观看一区二区三区| 黄色大片在线看| 成人免费一区二区三区在线观看| 97中文字幕在线| 日韩欧美少妇| 日韩欧美在线综合网| 三级视频网站在线观看| 日韩啪啪电影网| 欧美黄色www| 在线观看国产区| 国产99久久久精品| 天堂一区二区三区| 国内高清免费在线视频| 欧美影视一区在线| 高清中文字幕mv的电影| 日韩精品四区| 91精品国产91久久久| 亚洲综合精品视频| 91老师国产黑色丝袜在线| 国产大尺度在线观看| 三妻四妾完整版在线观看电视剧 | 国产精品久久久久婷婷二区次| 黄色一级大片免费| 国偷自产一区二区免费视频| 欧美一区二区二区| 丁香激情五月少妇| 在线成人av| 91色在线视频| 亚洲成a人v欧美综合天堂麻豆| 亚洲18女电影在线观看| www激情五月| 91综合视频| 国产精品91在线| 视频三区在线观看| 五月婷婷欧美视频| 熟女人妻一区二区三区免费看| 欧美肥老太太性生活| 国产精品白丝jk喷水视频一区| 色网站免费观看| 亚洲综合在线五月| 女王人厕视频2ⅴk| 欧美精品色网| 91亚洲精品久久久久久久久久久久| 国产系列在线观看| 欧美日韩免费看| 99re这里只有| 亚洲久久视频| 精品国产一区二区三区日日嗨 | 欧美综合在线视频观看 | 欧美成人app| 亚洲区在线播放| 日韩中文字幕在线观看视频| 9人人澡人人爽人人精品| 中国丰满熟妇xxxx性| 亚洲小说春色综合另类电影| 另类天堂视频在线观看| 国产精品伦理一区| 自拍偷拍国产精品| 欧美日韩理论片| 欧美区日韩区| 国产乱码精品一区二区三区不卡| 日本乱理伦在线| 亚洲第一在线视频| 丰满少妇乱子伦精品看片| 99re这里只有精品首页| 美女av免费在线观看| 欧美色图五月天| 日本韩国欧美精品大片卡二| 黄色免费在线播放| 欧美在线观看一区二区| 日本爱爱小视频| 国产乱人伦偷精品视频不卡| 欧美在线观看视频免费| 国产毛片久久久| 欧美在线激情视频| 韩国福利在线| 51精品秘密在线观看| 精品一区二区三区四| 91香蕉视频mp4| 手机看片福利盒子久久| 久久美女视频| 动漫3d精品一区二区三区 | 久久久久亚洲| 国产精品一国产精品最新章节| 老牛影视精品| 在线播放国产一区二区三区| 国产亲伦免费视频播放| 亚洲国产日日夜夜| 国产一二三四五区| 久久国产视频网| 老太脱裤让老头玩ⅹxxxx| 欧美**字幕| 亚洲a成v人在线观看| 久草在线资源福利站| 伊人久久久久久久久久久| 国产欧美日韩成人| 欧美性xxxxxx| 九九热最新地址| 久久久国产一区二区三区四区小说| 青青草原国产在线视频| 日韩一级免费| 激情图片qvod| 九九久久电影| 粉嫩av免费一区二区三区| 国产成人免费9x9x人网站视频| 欧美精品制服第一页| 精品亚洲综合| 欧美精品一区二区三区一线天视频| av手机天堂网| 亚洲一区二区三区中文字幕| 精品无码人妻一区二区免费蜜桃| 国产乱理伦片在线观看夜一区| 国内自拍在线观看| 欧美国产高清| 亚洲成人午夜在线| 任我爽精品视频在线播放| 91精品久久久久久久久久久久久久| av资源一区| 久久久国产一区| 免费成人av电影| 欧美va天堂va视频va在线| 国产精品成人无码| 欧美日韩免费看| 久久9999久久免费精品国产| 国产精品国产三级国产a| 中文字幕狠狠干| 成人一区二区三区视频| 国产成人在线综合| 天堂一区二区在线免费观看| 你懂的av在线| 亚洲五月婷婷| 蜜臀av.com| 青青一区二区三区| 免费99视频| 欧亚精品一区| 国内精品二区| 爱爱精品视频| 999日本视频| 国产精品一区二区三区av| 国产精品影院在线观看| 色8久久影院午夜场| 欧美亚洲成人精品| av中文在线资源库| 性欧美xxxx视频在线观看| 欧美人与性动交α欧美精品济南到 | 亚洲中文字幕一区| 成人国产在线观看| 国产精品偷伦视频免费观看了| 国产在线精品免费av| xxxx在线免费观看| 久久99国产精品尤物| 五月天亚洲视频| 麻豆国产精品777777在线| 欧美日韩怡红院| 蜜臀久久99精品久久久久宅男| 午夜免费一区二区| 日韩电影在线观看电影| 国产无套内射久久久国产| 久久精品亚洲一区二区| 欧美黄色一级片视频| 日韩专区一卡二卡| 欧美成人福利在线观看| 久久草av在线| 日本亚洲一区二区三区| 国产黄色精品网站| 国产一精品一aⅴ一免费| 成人黄色在线看| 五十路六十路七十路熟婆| 久久综合久久鬼色中文字| 欧美图片一区二区| 欧美国产精品专区| 69夜色精品国产69乱| 亚洲欧美一区二区久久| 久久久综合久久久| 精品久久久香蕉免费精品视频| 久久一区二区三区视频| 欧洲视频一区二区| 国产精品爽爽久久久久久| 日韩欧美三级在线| 青青草超碰在线| 中文字幕av日韩| 国产激情视频在线| 91成人天堂久久成人| 欧美电影免费观看| 成人免费自拍视频| 久久丝袜视频| 亚洲高清乱码| 韩国自拍一区| av视屏在线播放| 国产一区二区在线免费观看| 日本性生活一级片| 国产日韩精品一区二区三区| 三级av在线免费观看| 福利视频一区二区| 亚洲天堂狠狠干| 精品国产乱码久久久久久免费| 男人天堂亚洲二区| 久久精品国产成人| 天堂√中文最新版在线| 91日韩在线视频| 西野翔中文久久精品国产| 亚洲区一区二区三区| 国产精品激情| 青青草精品视频在线观看| 国产成人8x视频一区二区| japanese中文字幕| 亚洲一区免费在线观看| 亚洲精品91天天久久人人| 欧美成人r级一区二区三区| 成年人视频在线免费观看| 2019中文字幕免费视频| 成人免费观看49www在线观看| 久久大片网站| 欧美在线亚洲| 国产又大又黄又猛| 99re66热这里只有精品3直播| 天堂网avav| 欧美三级一区二区| 香蕉久久国产av一区二区| 久久影院模特热| 在线一区视频观看| 久久国产主播精品| 精品福利电影| 性高潮免费视频| 亚洲色图视频网站| 这里只有精品9| 亚洲精品中文字幕有码专区| 国产www视频在线观看| 91亚洲国产成人久久精品网站| 精品免费av| 国产又黄又猛视频| 91视视频在线观看入口直接观看www| 精品国产乱码久久久久久鸭王1| 色8久久人人97超碰香蕉987| 亚洲国产精品欧美久久| 久久天天躁夜夜躁狠狠躁2022| yiren22亚洲综合| 日本成人三级| 日韩精品久久久久久| 中文字幕日韩三级片| 亚洲成人免费在线| 人妻va精品va欧美va| 欧美激情videos| 伊人久久影院| 国产精品视频网站在线观看| 国产精品1024| 免费又黄又爽又色的视频| 欧美一区二区三区成人| a级影片在线| 亚洲精品免费一区二区三区| 伊人久久大香线| 亚洲一区二区中文字幕在线观看| 1区2区3区精品视频| 91国产精品一区| 久久香蕉国产线看观看av| 亚洲天堂网站| 最近中文字幕免费mv| 国产裸体歌舞团一区二区| 欧美爱爱小视频| 精品国产乱码久久久久久牛牛| 97在线超碰| 免费亚洲一区二区| 日韩av中文在线观看| 国产在线免费av| 91超碰这里只有精品国产| 成人ww免费完整版在线观看| 91久久大香伊蕉在人线| 欧美精品啪啪| 天天插天天射天天干| 色综合天天在线| 免费a级人成a大片在线观看| 亚洲伊人一本大道中文字幕| 精品1区2区3区4区| 伊人网综合视频| 色婷婷综合久久久久中文一区二区| www.亚洲资源| 亚洲一区免费网站| 亚洲免费精品| www.99热| 日韩精品一区二区三区四区视频| 国产在线88av| 色爱区成人综合网| 国产一区二区在线电影| 国产午夜精品无码| 亚洲三级 欧美三级| 9999精品| 可以在线看的av网站| 国产午夜精品理论片a级大结局| 91丨porny丨在线中文 | 99久久精品国产网站| 中文字幕久久久久| 欧美激情一区二区三区久久久| 网红女主播少妇精品视频| 国产3p在线播放| 黄色精品一区二区| 一本一道波多野毛片中文在线| 91麻豆蜜桃| 日本伊人午夜精品| 九九热这里有精品视频| 亚洲男人的天堂在线| 日韩在线精品强乱中文字幕| 无码无遮挡又大又爽又黄的视频| 亚洲丝袜制服诱惑| 欧美色视频免费| 高清一区二区三区视频|