牛客劍指offer刷題回溯篇

文章目錄

      • 矩陣中的路徑
        • 題目
        • 思路
        • 代碼實現
      • 機器人的運動范圍
        • 題目
        • 思路
        • 代碼實現

矩陣中的路徑

題目

請設計一個函數,用來判斷在一個n乘m的矩陣中是否存在一條包含某長度為len的字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則該路徑不能再進入該格子。 例如:
[a b c e]
[s f c s]
[a d e e]
矩陣中包含一條字符串"bcced"的路徑,但是矩陣中不包含"abcb"路徑,因為字符串的第一個字符b占據了矩陣中的第一行第二個格子之后,路徑不能再次進入該格子。

思路

采用回溯法思想,對于矩陣中各個坐標一個個嘗試,并遞歸查找對應位置上下左右位置,直到查找完畢;
牛客鏈接以及題解

代碼實現
   public boolean hasPath (char[][] matrix, String word) {char[] words = word.toCharArray();//遍歷查找矩陣各個位置是否滿足for(int i = 0 ; i < matrix.length ; i++){for(int j = 0; j < matrix[0].length;j++){if(dfs(matrix,words,i,j,0)){return true;}}}return false;}/*** matrix 表示二維查找矩陣* 目標字符串* i 表示 行號* j 表示 列號* index 表示字符當前下標*/private boolean dfs(char[][] matrix,char[] words,int i,int j,int index){//邊界判斷if(i < 0 || i >= matrix.length || j < 0 || j >= matrix[0].length || words[index] != matrix[i][j]){return false;}//匹配結束,直接返回trueif(index == words.length -1){return true;}//記錄下當前字符,用于后續還原char temp = matrix[i][j];//使用過的字符設置為特殊符號,標記為已使用,后續無法再次匹配成功matrix[i][j] = '@';//遞歸查找上下左右字符是否匹配成功boolean res = dfs(matrix,words,i-1,j,index+1) || dfs(matrix,words,i+1,j,index+1) ||dfs(matrix,words,i,j-1,index+1) || dfs(matrix,words,i,j+1,index+1);//還原字符,用于再次匹配matrix[i][j] = temp;return res;}

機器人的運動范圍

題目

地上有一個 rows 行和 cols 列的方格。坐標從 [0,0] 到 [rows-1,cols-1] 。一個機器人從坐標 [0,0] 的格子開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行坐標和列坐標的數位之和大于 threshold 的格子。 例如,當 threshold 為 18 時,機器人能夠進入方格 [35,37] ,因為 3+5+3+7 = 18。但是,它不能進入方格 [35,38] ,因為 3+5+3+8 = 19 。請問該機器人能夠達到多少個格子?
牛客鏈接

思路

同樣是采用回溯法進行解題,我們只需要正確的處理邊界判斷邏輯,然后套用通用模板即可;

代碼實現
 public int movingCount(int threshold, int rows, int cols) {//用于記錄當前下標是否被訪問過boolean[][] isVisited = new boolean[rows][cols];//從 0,0下標開始訪問return dfs(threshold,isVisited,rows,cols,0,0);}private int dfs(int threshold,boolean[][] isVisited,int rows,int cols, int i,int j){//處理訪問邊界if(i<0 || i>=rows || j<0 || j>=cols){return 0;}//訪問過的 或者不滿足threshold閾值的過濾掉if(isVisited[i][j] || sum(i,j) > threshold){return 0;}  //標記已訪問過isVisited[i][j] = true;//上下左右運動return 1+ dfs(threshold,isVisited,rows,cols,i-1,j) + dfs(threshold,isVisited,rows,cols,i+1,j) +  dfs(threshold,isVisited,rows,cols,i,j-1) + dfs(threshold,isVisited,rows,cols,i,j+1);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166618.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TensorFlow實戰教程(二十五)-基于BiLSTM-CRF的醫學命名實體識別研究(下)模型構建

這篇文章寫得很冗余,但是我相信你如果真的看完,并且按照我的代碼和邏輯進行分析,對您以后的數據預處理和命名實體識別都有幫助,只有真正對這些復雜的文本進行NLP處理后,您才能適應更多的真實環境,堅持!畢竟我寫的時候也看了20多小時的視頻,又寫了20多個小時,別抱怨,加…

JS按順序逐個發送 請求

1.使用Promise鏈 當需要按順序逐個發送 POST 請求時&#xff0c;可以使用 Axios 庫的 Promise 鏈來實現。在每個 POST 請求成功后&#xff0c;可以觸發下一個請求。這里有一個簡單的示例&#xff1a; 首先&#xff0c;確保已經在 HTML 文件中引入了 Axios 庫&#xff1a; &l…

控制反轉(IoC)是什么?

文章目錄 控制反轉&#xff08;Inversion of Control&#xff0c;IoC&#xff09;傳統的程序設計中&#xff1a;應用程序控制程序流程控制反轉設計中&#xff1a;由框架或容器控制程序流程IoC 的作用 舉例生活例子軟件工程例子 控制反轉&#xff08;Inversion of Control&#…

組合不重復的3位數

編程要求 給出四個不同的數字&#xff0c;能夠組成多少個不重復的3位數&#xff0c;按照從小到大的順序輸出&#xff0c;每行一個。 測試用例 測試輸入 1 2 3 4 測試輸出 123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 …

算法:給出指定整數區間、期望值,得到最終結果

1&#xff0c;問題&#xff1a; 在游戲中&#xff0c;我們經常會遇到以下情況&#xff1a;打開寶箱&#xff0c;獲得x個卡牌碎片。 但通常策劃只會給一個既定的數值空間&#xff0c;和一個期望得到的值&#xff0c;然后讓我們去隨機。比如&#xff1a; 問題A&#xff1a;在1~…

問卷調查平臺選擇指南:哪個好用與如何選擇的實用指南

問卷調查由于其成本低、數據可量化的特點&#xff0c;常被用于工作和學習中。網絡的發展使得問卷調查的形式也越累越多樣化&#xff0c;不少人在做問卷調查的時候可能都會提出這樣一個問題——問卷調查平臺哪個好用&#xff1f;怎么選擇&#xff1f; 選擇問卷調查平臺&#xf…

ubuntu22.04 arrch64版在線安裝redis

腳本 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 echo "deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse" >…

可以ping通IP但是無法遠程連接-‘telnet‘ 不是內部或外部命令,也不是可運行的程序或批處理文件

起因 一開始遠程連接IP&#xff0c;報錯&#xff0c;懷疑是自己網絡原因&#xff0c;但是同事依舊無法連接 懷疑是自己防火墻的原因&#xff0c;查看關閉依舊無法連接 問題 兩個地址可以ping通排除防火墻緣故 懷疑端口&#xff0c;測試端口 然 解決方案 winR 輸入control…

常見立體幾何圖形的體積

文章目錄 abstract祖暅原理推論 棱錐和圓錐的體積用積分的方法推導棱臺和圓臺的體積圓臺體積公式 球體的體積球體的表面積 abstract 錐體和球體的體積公式主要通過積分的方法推導 這類公式的推導中學一般不要求,只要會應用公式在高等數學中由合適和方便的工具來推導這些公式而…

App Inventor 2 數字轉文本

App Inventor 2 是弱語言類型&#xff0c;文本和數字之間不用刻意去轉換&#xff0c;之間賦值就可以了。 案例&#xff1a;數字轉文本 App Inventor 2 是弱語言類型&#xff0c;同理數字也能直接賦值給文本變量&#xff1a; 更多請參考&#xff1a;App Inventor 2 文本代碼塊…

【c語言】二維數組的對角線對稱交換

c語言&#xff0c;假設已經有了一個二維數組&#xff0c;對其進行對角線對稱變換&#xff0c;如&#xff08;0&#xff0c;1&#xff09;與&#xff08;1&#xff0c;0&#xff09;變換&#xff0c;并打印。 示例 #include <stdio.h>void swap(int *a, int *b) {int te…

opencv-背景減除

背景減除&#xff08;Background Subtraction&#xff09;是一種用于從視頻序列中提取前景對象的計算機視覺技術。該技術的主要思想是通過建模和維護場景的背景&#xff0c;從而檢測出在不同時間點出現的前景對象。 OpenCV 提供了一些用于背景減除的函數&#xff0c;其中最常用…

完善農業農村基礎數據資源體系,加速鄉村振興

完善農業農村基礎數據資源體系&#xff0c;加速鄉村振興 隨著鄉村振興戰略的實施&#xff0c;農業農村基礎設施建設也得到了越來越多的關注。然而&#xff0c;在實施這一戰略的過程中&#xff0c;我們也必須認識到&#xff0c;完善農業農村基礎數據資源體系同樣是十分重要的。 …

opencv-ORB檢測

ORB&#xff08;Oriented FAST and Rotated BRIEF&#xff09;是一種圖像特征檢測和描述算法&#xff0c;結合了 FAST 關鍵點檢測器和 BRIEF 描述子的優點。ORB 算法具有良好的性能&#xff0c;特別適用于實時應用&#xff0c;如目標追蹤、相機定位等。 以下是 ORB 算法的一般…

MCU常用文件格式

1. asm文件 asm是匯編語言源程序的擴展名&#xff0c;.asm文件是以asm作為擴展名的文件&#xff0c;是匯編語言的源程序文件。匯編語言(Assembly Language)是面向機器的程序設計語言&#xff0c;是利用計算機所有硬件特性并能直接控制硬件的語言。在匯編語言中&#xff0c;用助…

【廣州華銳互動】利用VR體驗環保低碳生活能帶來哪些教育意義?

隨著科技的不斷發展&#xff0c;虛擬現實&#xff08;VR&#xff09;技術已經逐漸走進了我們的生活。從游戲娛樂到教育培訓&#xff0c;VR技術的應用范圍越來越廣泛。而在這個追求綠色、環保的時代&#xff0c;VR技術也為我們帶來了一種全新的環保低碳生活方式。讓我們一起走進…

nginx配置相關應用服務

1、無ssl證書的conf文件 server {listen 80;server_name test.domain.com;root html;index index.html index.htm;location / {proxy_http_version 1.1;proxy_set_header Connection "";proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_…

Java String.contains()方法

描述&#xff1a; java.lang.String.contains()方法返回true&#xff0c;當且僅當此字符串包含指定的char值序列。 聲明&#xff1a; 以下是聲明java.lang.String.contains()方法 public boolean contains(CharSequence s) 返回值&#xff1a; 如果此字符串包含&#xff…

2022年MathorCup高校數學建模挑戰賽—大數據競賽A題58到家家政服務訂單分配問題求解全過程文檔及程序

2022年MathorCup高校數學建模挑戰賽—大數據競賽 A題 58到家家政服務訂單分配問題 原題再現&#xff1a; “58 到家”是“58 同城”旗下高品質、高效率的上門家政服務平臺&#xff0c;平臺向用戶提供家政保潔、保姆、月嫂、搬家、維修等眾多生活領域的服務。在家政保潔場景中…

欲更新瀏覽器的Mac用戶請注意,AMOS又出一招新“騙術”

近日&#xff0c;Malwarebytes發現有一種專門針對Mac操作系統&#xff08;OS&#xff09;的數據竊取程序正通過偽造的網頁瀏覽器更新程序進行分發。Malwarebytes稱這與其通常的技術、戰術和程序大不相同&#xff0c;該惡意軟件可以模仿 Safari 和谷歌 Chrome 瀏覽器。 網絡安全…