[剑指offer][JAVA][面试题第13题][机器人的运动][DFS][BFS]
生活随笔
收集整理的這篇文章主要介紹了
[剑指offer][JAVA][面试题第13题][机器人的运动][DFS][BFS]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】 [中等]
地上有一個m行n列的方格,從坐標 [0,0] 到坐標 [m-1,n-1] 。一個機器人從坐標 [0, 0] 的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行坐標和列坐標的數位之和大于k的格子。例如,當k為18時,機器人能夠進入方格 [35, 37] ,因為3+5+3+7=18。但它不能進入方格 [35, 38],因為3+5+3+8=19。請問該機器人能夠到達多少個格子?示例 1: 輸入:m = 2, n = 3, k = 1 輸出:3 示例 1:輸入:m = 3, n = 1, k = 0 輸出:1 提示: 1 <= n,m <= 100 0 <= k <= 20【解答思路】
題目分析:題意是一個人從(0,0)開始向走,可以走四個方向,它下一個走到的地方的坐標數位之和不超過k,問這個人最多可以走多少個格子
1. DFS
- 從起點開始用深搜的方式遍歷矩陣 只向下或者向右
- 控制深搜邊界的同時判斷當前訪問的位置數位和是否小于等于k
- 需要一個標記數組記錄每個位置的訪問情況,防止重復計算
時間復雜度:O(N^2) 空間復雜度:O(N)
2. BFS(隊列)
- 從起點開始用深搜的方式遍歷矩陣 只向下或者向右
- 控制深搜邊界的同時判斷當前訪問的位置數位和是否小于等于k
- 需要一個標記數組記錄每個位置的訪問情況,防止重復計算
時間復雜度:O(N) 空間復雜度:O(N)
【總結】
1. BFS
- 確定遞歸參數
- 終止條件
- 標記數組記錄每個位置的訪問情況
- 計數在遞歸回溯中 (同廣度)
2. DFS
- 隊列 (出隊后搜索符合條件入隊)
- 終止條件
- 標記數組記錄每個位置的訪問情況
- 計數在所有相同深度出完隊列之后
3. BFS DFS 分步思考 效果佳
4.100以內數之和
總結
以上是生活随笔為你收集整理的[剑指offer][JAVA][面试题第13题][机器人的运动][DFS][BFS]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最新苹果CMSV10视频电影网站源码+自
- 下一篇: 台式计算机模拟软件,仿真软件 计算机仿