Day50--圖論--98. 所有可達路徑(卡碼網),797. 所有可能的路徑

Day50–圖論–98. 所有可達路徑(卡碼網),797. 所有可能的路徑

刷今天的內容之前,要先去《代碼隨想錄》網站,先看完:圖論理論基礎和深度優先搜索理論基礎。做完之后可以看題解。有余力,把廣度優先搜索理論基礎也看了。

98. 所有可達路徑(卡碼網)

方法:回溯

思路:

本題的方法是回溯,具體思路都在代碼注釋中已有體現。

遞歸三部曲:

  1. 確定遞歸參數和返回值:private static void dfs(int node, int target)
  2. 確定終止條件:如果遍歷到的node就是末尾,得到一條path,返回。if (node == target) res.add(new ArrayList(path));
  3. 遞歸中的處理操作:一個for循環,遍歷當前node結點的鄰接表nodeList。遞歸完,記得回溯!記得回溯!記得回溯!
import java.util.*;public class Main {// 類變量,不用傳遞參數private static List<List<Integer>> graph = new ArrayList<>();private static List<List<Integer>> res = new ArrayList<>();private static List<Integer> path = new ArrayList<>();public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();// 創建n+1個,方便下標for (int i = 0; i <= n; i++) {graph.add(new ArrayList<>());}// 輸入邊for (int i = 0; i < m; i++) {int from = in.nextInt();int to = in.nextInt();graph.get(from).add(to);}// 從1開始path.add(1);dfs(1, n);// 輸出結果if (res.size() == 0) {System.out.println(-1);} else {print();}}private static void dfs(int node, int target) {// 如果該結點就是target,得到一條path,返回。if (node == target) {res.add(new ArrayList(path));return;}// 遍歷這個node的鄰接表nodeListList<Integer> nodeList = graph.get(node);for (int i : nodeList) {// path中加入元素path.add(i);// 下一層遞歸dfs(i, target);// 回溯:從path中移除元素path.remove(path.size() - 1);}}// 打印結果private static void print() {for (List<Integer> path : res) {// 先打第一個元素System.out.print(path.get(0));// 后面的元素都是空格+元素for (int i = 1; i < path.size(); i++) {System.out.print(" " + path.get(i));}// 打一個換行System.out.println("");}}
}

797. 所有可能的路徑

思路:

和上一題是同一道題,不過不用自己處理輸入和輸出。

class Solution {List<List<Integer>> res = new ArrayList<>();List<Integer> path = new ArrayList<>();public List<List<Integer>> allPathsSourceTarget(int[][] graph) {int target = graph.length - 1;path.add(0);dfs(graph, 0, target);return res;}private void dfs(int[][] graph, int node, int target) {if (node == target) {res.add(new ArrayList(path));return;}for (int i = 0; i < graph[node].length; i++) {path.add(graph[node][i]);dfs(graph, graph[node][i], target);path.remove(path.size() - 1);}}
}

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

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

相關文章

Python 異常捕獲

一、獲取未知錯誤try:# 相關處理邏輯 異常后面輸出print(輸入信息……) except Exception as e:print(未知錯誤,e)二、獲取已知錯誤except 錯誤單詞&#xff08;來源于錯誤信息的第一個單詞&#xff09;多個已知錯誤使用 except XXXXX:try:# 相關處理邏輯 異常后面輸出print…

RIOT、RT-Thread 和 FreeRTOS 是三種主流的實時操作系統

RIOT、RT-Thread 和 FreeRTOS 是三種主流的實時操作系統&#xff08;RTOS&#xff09;&#xff0c;專為嵌入式系統和物聯網&#xff08;IoT&#xff09;設備設計。它們在架構、功能、生態和應用場景上有顯著差異&#xff0c;以下是詳細對比&#xff1a;1. 架構與設計理念特性RI…

【FAQ】Win11創建資源不足繞開微軟賬號登錄

Win11安裝資源限制 因為 Windows 11 有兩項強制檢測 VMware 8 默認沒提供&#xff1a; TPM 2.0&#xff08;可信平臺模塊&#xff09;Secure Boot&#xff08;安全啟動&#xff09; 一步到位解決辦法&#xff08;官方兼容方式&#xff09; 關閉虛擬機電源編輯虛擬機設置 選項 →…

Docker使用----(安裝_Windows版)

一、Docker Docker 鏡像就像是一個軟件包&#xff0c;里面包括了應用程序的代碼、運行所需的庫和工具、配置文件等等&#xff0c;所有這些都打包在一起&#xff0c;以確保應用程序在不同的計算機上運行時&#xff0c;都能保持一致性。 可以把 Docker 鏡像想象成一個軟件安裝文件…

91、23種經典設計模式

設計模式是軟件設計中反復出現的解決方案的模板&#xff0c;用于解決特定問題并提高代碼的可維護性、可擴展性和可復用性。23種經典設計模式可分為創建型、結構型和行為型三大類&#xff0c;以下是具體分類及模式概述&#xff1a; 一、創建型模式&#xff08;5種&#xff09; 關…

Illustrator總監級AI魔法:一鍵讓低清logo變矢量高清,徹底告別手動描摹!

在海外從事設計十幾年&#xff0c;我敢說&#xff0c;每個設計師都經歷過一種“史詩級”的折磨&#xff1a;客戶發來一個像素低得感人、邊緣模糊不清的JPG格式Logo&#xff0c;然后要求你把它用在巨幅海報或者高清視頻上。這意味著什么&#xff1f;意味著我們要打開Illustrator…

各種 dp 刷題下

6.#8518 杰瑞征途 / 洛谷 P4072 征途 題意 Pine 開始了從 SSS 地到 TTT 地的征途。從 SSS 地到 TTT 地的路可以劃分成 nnn 段&#xff0c;相鄰兩段路的分界點設有休息站。Pine 計劃用 mmm 天到達 TTT 地。除第 mmm 天外&#xff0c;每一天晚上 Pine 都必須在休息站過夜。所以…

本地WSL部署接入 whisper + ollama qwen3:14b 總結字幕增加利用 Whisper 分段信息,全新 Prompt功能

1. 實現功能 M4-3: 智能后處理 - 停頓感知增強版 (終極版) 本腳本是 M4-3 的重大升級&#xff0c;引入了“停頓感知”能力&#xff1a; 利用 Whisper 分段信息: 將 Whisper 的 segments 間的自然停頓作為強信號 ([P]) 提供給 LLM。全新 Prompt: 設計了專門的 Prompt&#xff0c…

微算法科技(NASDAQ:MLGO)開發經典增強量子優化算法(CBQOA):開創組合優化新時代

近年來&#xff0c;量子計算在組合優化領域的應用日益受到關注&#xff0c;各類量子優化算法層出不窮。然而&#xff0c;由于現階段量子硬件的局限性&#xff0c;如何充分利用已有的經典計算能力來增強量子優化算法的表現&#xff0c;成為當前研究的重要方向。基于此&#xff0…

功能、延遲、部署、成本全解析:本地化音視頻 SDK 對比 云端方案

引言 在構建實時音視頻系統時&#xff0c;技術選型往往決定了項目的天花板。開發者面臨的第一個關鍵抉擇&#xff0c;就是是選擇完全可控的本地化音視頻內核&#xff0c;還是依賴云廠商的實時音視頻服務。 以大牛直播SDK&#xff08;SmartMediaKit&#xff09;為代表的本地部…

微調入門:為什么微調

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄1 什么時候我們需要微調呢&#xff1f;1.1 微調的…

3、匹配一組字符

在本章里&#xff0c;你將學習如何與字符集合打交道。與可以匹配任意單個字符的.字符&#xff08;參見第2章&#xff09;不同&#xff0c;字符集合能匹配特定的字符和字符區間。3.1 匹配多個字符中的某一個第2章介紹的.?字符&#xff0c;可以匹配任意單個字符。當時在最后一個…

強化學習在量化交易中的禁區:回測表現好實盤虧錢的4個原因

引言 “為什么你的強化學習策略在回測中年化 50%,到了實盤卻三個月虧光本金?” 如果你做過量化交易,尤其是嘗試用強化學習(Reinforcement Learning, RL),這種場景可能并不陌生: 回測曲線平滑向上,最大回撤可控,勝率穩定 模型參數和架構調到極致,每次迭代都帶來更高的…

代碼隨想錄day62圖論11

文章目錄Floyd 算法精講A * 算法精講 &#xff08;A star算法&#xff09;Floyd 算法精講 題目鏈接 文章講解 #include <iostream> #include <vector> #include <algorithm> using namespace std;int main() {int n, m;cin >> n >> m; // 輸入…

【18】OpenCV C++實戰篇——【項目實戰】OpenCV C++ 精準定位“十字刻度尺”中心坐標,過濾圖片中的干擾,精準獲取十字交點坐標

文章目錄1 問題及分析2 多尺度霍夫直線 與 漸進概率霍夫線段 細節對比2.1 多尺度霍夫直線 HoughLines2.2 漸進概率霍夫線段 HoughLinesP2.3 HoughLines 和 HoughLinesP 所求結果細節對比2.4 為什么 HoughLinesP 直線兩端沒有呈放射狀態呢&#xff1f;直線總是平行嗎&#xff1f…

云原生應用的DevOps2(Jenkins滲透場景)

結論 Jenkins歷史漏洞 Jenkins未授權訪問 登錄后命令執行 Jenkins代碼倉庫信息 Jenkins服務器建立多臺服務器信任連接 背景 目前我看到紅隊人員的現狀,不管是什么系統就是拿Shell,拿權限,然后把這臺機器當作跳板繼續橫向其它機器。而Jenkins在內網中是經常能夠遇到的,…

Gradle 配置教程:與 Maven 對比詳解(含完整遷移指南)

一、基礎對比&#xff1a;Gradle vs Maven1.1 核心特性對比維度MavenGradle配置語言XML (冗長)Groovy/Kotlin DSL (簡潔靈活)構建速度較慢(全量構建)快2-10倍(增量構建緩存)多模塊管理<modules> <parent>settings.gradle project()依賴管理<dependencies>d…

pcl 按比例去除點云的噪點

之前halcon3d中是這么做的&#xff1b;1&#xff0c;先查找點云中每個點最近第15個最近點的距離2&#xff0c;將距離進行排序3&#xff0c;求排序后在距離數組70%位置的距離 d4&#xff0c;篩選點云中每個點半徑為d&#xff0c;近鄰點的數量大于14的點用pcl實現的代碼如下&…

站在Vue的角度,對比鴻蒙開發中的遞歸渲染

第三類 引用數據的操作 引用數據類型 又叫復雜數類型&#xff0c; 典型的代表是對象和數組&#xff0c;而數組和對象往往又嵌套到到一起 普通數組和對象的使用 vue中使用for循環遍歷 <template><div>我是關于頁面<div v-for"item in arr">{{ i…

VBS 流程控制

一. if else 和 selec case 1. if end if Dim a a2If a0 ThenMsgBox "這里是0"End if 2. if else end if Dim a a2If a0 ThenMsgBox "這里是0"Else MsgBox "這里是2" 彈窗“這里是2”End if 3. if -----elseif-------else-------end…