offer 13 機器人的運動範圍 深度優先遍歷 DFS

機器人的運動範圍

image.png

方法一:深度優先遍歷 dfs

image.png
image.png

回溯返回值: 返回 1 + 右方搜索的可達解總數 + 下方搜索的可達解總數,表明從本單元格遞歸搜索的可達解總數。
計算能走到多少個方格,那麼就不能重複,上一個題12. 矩陣中的路徑(深度優先搜索(DFS)),是利用先標'\0'後復原的方法獲得,但此題須要計算方格數
這裏須要創建一個數組記錄,
具體點,創建一個與矩陣等大的二維布爾數組,!!注意布爾類型默認值是false。
image.png數組

方法二:廣度優先遍歷 BFS

朝一個方向走到底再回退
image.png
DFS是一條路一直走直到false,遞歸+boolean數組
BFS是右下一塊兒走,直到走完,隊列+boolean數組優化

遍歷到一個點,就把右,下的點都傳到數組裏。

本題往LinkedList裏面傳的是數組的形式,也就是隊列元素是數組
image.pngspa


傳入四個參數,位數和也傳入了
image.png
上面那個:xi,xj就是i、j的個位十位數之和,一次只會突變一個,要麼xi,要麼xj。code

  • 優化個位十位的和遞歸

    • 數位和的通常求法:隊列

      個位:x%10,x的模
      十位:x/10
    • 因爲題中說明了最大隻到兩位數,且機器一次只走一步,所以只有兩種狀況:it

      i;j=1,2,這樣,11,12,這樣,位和x只會增長1,xi++,xj++
      i;i=19,20,這樣,29,30這樣,位和x就會多減小8,xi-8,xj-8,
    • 所以能夠優化爲:class

      (i+1)%10 = 0 ?xi=xi-8:xi=xi+1;
相關文章
相關標籤/搜索