Day 55 卡瑪筆記

這是基于代碼隨想錄的每日打卡

所有可達路徑

題目描述

? 給定一個有 n 個節點的有向無環圖,節點編號從 1 到 n。請編寫一個函數,找出并返回所有從節點 1 到節點 n 的路徑。每條路徑應以節點編號的列表形式表示。

輸入描述

? 第一行包含兩個整數 N,M,表示圖中擁有 N 個節點,M 條邊

? 后續 M 行,每行包含兩個整數 s 和 t,表示圖中的 s 節點與 t 節點中有一條路徑

輸出描述

輸出所有的可達路徑,路徑中所有節點之間空格隔開,每條路徑獨占一行,存在多條路徑,路徑輸出的順序可任意。如果不存在任何一條路徑,則輸出 -1。

注意輸出的序列中,最后一個節點后面沒有空格! 例如正確的答案是 1 3 5,而不是 1 3 5 , 5后面沒有空格!

輸入示例
5 5
1 3
3 5
1 2
2 4
4 5
輸出示例
1 3 5
1 2 4 5
提示信息

? img

? 用例解釋:

? 有五個節點,其中的從 1 到達 5 的路徑有兩個,分別是 1 -> 3 -> 5 和 1 -> 2 -> 4 -> 5。

? 因為擁有多條路徑,所以輸出結果為:

? 1 3 5 1 2 4 5或1 2 4 5 1 3 5 都算正確。

? 數據范圍:

  • ? 圖中不存在自環
  • ? 圖中不存在平行邊
  • ? 1 <= N <= 100
  • ? 1 <= M <= 500

鄰接矩陣法

def dfs(matrices,path,res,node,n):if node==n:res.append(path[:])returnfor i in range(1,n+1):  # 每層有n個葉子節點if matrices[node][i]==1:path.append(i)dfs(matrices,path,res,i,n)path.pop()  # 回溯def main():n,m=map(int,input().split())# 創建鄰接矩陣matrices=[[0 for _ in range(n+1)] for _ in range(n+1)]for _ in range(m):start,end=map(int,input().split())matrices[start][end]=1res=[]dfs(matrices,[1],res,1,n)if len(res)==0:print(-1)else:for path in res:print(' '.join(map(str,path)))if __name__=='__main__':main()

運行結果

在這里插入圖片描述


鄰接表法

from collections import defaultdict
def dfs(graph,res,path,node,n):if node==n:res.append(path[:])return for i in graph[node]:  # 遍歷每層葉子節點path.append(i)dfs(graph,res,path,i,n)path.pop()  # 回溯def main():n,m=map(int,input().split())# 創建鄰接表graph=defaultdict(list)for _ in range(m):start,end=map(int,input().split())graph[start].append(end)res=[]dfs(graph,res,[1],1,n)if not res:print(-1)else:for path in res:print(' '.join(map(str,path)))if __name__=='__main__':main()

運行結果

在這里插入圖片描述



797. 所有可能的路徑

給你一個有 n 個節點的 有向無環圖(DAG),請你找出所有從節點 0 到節點 n-1 的路徑并輸出(不要求按特定順序

graph[i] 是一個從節點 i 可以訪問的所有節點的列表(即從節點 i 到節點 graph[i][j]存在一條有向邊)。

示例 1:

img

輸入:graph = [[1,2],[3],[3],[]]
輸出:[[0,1,3],[0,2,3]]
解釋:有兩條路徑 0 -> 1 -> 3 和 0 -> 2 -> 3

示例 2:

img

輸入:graph = [[4,3,1],[3,2,4],[3],[4],[]]
輸出:[[0,4],[0,3,4],[0,1,3,4],[0,1,2,3,4],[0,1,4]]

class Solution:def __init__(self):self.path=[]self.res=[]def dfs(self,graph,node,n):if node==n-1:self.res.append(self.path[:])return for node in graph[node]:self.path.append(node)self.dfs(graph,node,n)self.path.pop()def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:self.path.append(0)self.dfs(graph, 0, len(graph))return self.res 

運行結果

在這里插入圖片描述

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

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

相關文章

2. 在后端代碼中加入日志記錄模塊

1. 說明 日志模塊基本上是每一個軟件系統開發中必不可少的&#xff0c;主要用于持久記錄一些代碼運行中的輸出信息&#xff0c;輔助編碼人員進行代碼調試&#xff0c;以及后期軟件上線運行報錯分析。在Python中加入日志模塊比較簡單&#xff0c;只需要借助logging和RotatingFi…

【Vue3】淺談setup語法糖

Vue3 的 setup 語法糖是通過 <script setup> 標簽啟用的特性&#xff0c;它是對 Composition API 的進一步封裝&#xff0c;旨在簡化組件的聲明式寫法&#xff0c;同時保留 Composition API 的邏輯組織能力。以下是其核心概念和原理分析&#xff1a; 一、<script setu…

物聯網小范圍高精度GPS使用

在園區內實現小范圍高精度GPS&#xff08;全球定位系統&#xff09;定位&#xff0c;通常需要結合多種技術來彌補傳統GPS在精度和覆蓋范圍上的不足。以下是實現小范圍高精度GPS定位的解決方案&#xff0c;包括技術選擇、系統設計和應用場景。 一、技術選擇 在園區內實現高精度…

【前端】前端設計中的響應式設計詳解

文章目錄 前言一、響應式設計的定義與作用二、響應式設計的原則三、響應式設計的實現四、響應式設計的最佳實踐總結 前言 在當今數字化時代&#xff0c;網站和應用程序需要適應各種設備&#xff0c;從桌面電腦到平板電腦和手機。響應式設計應運而生&#xff0c;成為一種可以適…

Rocky Linux 系統安裝 typecho 個人博客系統(Docker 方式)

typecho 博客系統安裝 官網: https://typecho.org/ 1. 安裝 Docker curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo && yum install docker-ce -y && docker -v && systemctl enable --now docker…

pytorch-gpu版本安裝(英偉達gpu驅動安裝)

一、安裝cuda 1?? 檢查是否有 GPU lspci | grep -i nvidia如果沒有輸出&#xff0c;可能你的服務器 沒有 GPU&#xff0c;或者 GPU 未正確識別。 2?? 檢查 NVIDIA 驅動是否安裝 dpkg -l | grep -i nvidia如果沒有相關輸出&#xff0c;說明驅動未安裝&#xff0c;建議安…

華為OD-2024年E卷-分批薩[100分]

文章目錄 題目描述輸入描述輸出描述用例1解題思路Python3源碼 題目描述 吃貨"和"饞嘴"兩人到披薩店點了一份鐵盤&#xff08;圓形&#xff09;披薩&#xff0c;并囑咐店員將披薩按放射狀切成大小相同的偶數個小塊。但是粗心的服務員將披薩切成了每塊大小都完全不…

【計算機網絡入門】初學計算機網絡(六)

目錄 1.回憶數據鏈路層作用 2. 組幀 2.1 四種組幀方法 2.1.1 字符計數法 2.1.2 字節填充法 2.1.3 零比特填充法 2.1.4 違規編碼法 3. 差錯控制 3.1 檢錯編碼 3.1.1 奇偶校驗碼 3.1.2 CRC&#xff08;循環冗余校驗&#xff09;校驗碼 3.2 糾錯編碼 3.2.1 海明校驗碼…

yolo位姿估計實驗

目錄 介紹實驗過程 2.1 數據集下載 2.2 模型和數據配置文件修改 2.3 模型訓練參考鏈接 1. 介紹 1.1 簡介 YOLOv8-Pose是基于YOLOv4算法的姿勢估計模型&#xff0c;旨在實現實時高效的人體姿勢估計。姿勢估計在計算機視覺領域具有重要意義&#xff0c;可廣泛應用于視頻監控、…

極簡Redis速成學習

redis是什么&#xff1f; 是一種以鍵值對形式存儲的數據庫&#xff0c;特點是基于內存存儲&#xff0c;讀寫快&#xff0c;性能高&#xff0c;常用于緩存、消息隊列等應用情境 redis的五種數據類型是什么&#xff1f; 分別是String、Hash、List、Set和Zset&#xff08;操作命…

大語言模型學習--本地部署DeepSeek

本地部署一個DeepSeek大語言模型 研究學習一下。 本地快速部署大模型的一個工具 先根據操作系統版本下載Ollama客戶端 1.Ollama安裝 ollama是一個開源的大型語言模型&#xff08;LLM&#xff09;本地化部署與管理工具&#xff0c;旨在簡化在本地計算機上運行和管理大語言模型…

【OpenCV C++】以時間命名存圖,自動檢查存儲目錄,若不存在自動創建, 按下空格、回車、Q、S自動存圖

文章目錄 // 保存圖像的函數 void saveImage(const cv::Mat& frame) {// 生成唯一文件名auto now = std::chrono::system_clock::

【JavaEE】線程安全

【JavaEE】線程安全 一、引出線程安全二、引發線程安全的原因三、解決線程安全問題3.1 synchronized關鍵字&#xff08;解決修改操作不是原子的&#xff09;3.1.1 synchronized的特性3.1.1 synchronized的使用事例 3.2 volatile 關鍵字&#xff08;解決內存可見性&#xff09; …

Vue核心知識:動態路由實現完整方案

在Vue中實現動態路由&#xff0c;并結合后端接口和數據庫表設計&#xff0c;是一個復雜的項目&#xff0c;需要多個技術棧和步驟的配合。以下將詳細描述整個實現過程&#xff0c;包括數據庫設計、后端接口設計、前端路由配置以及如何實現動態路由的功能。 目錄 一、需求分析二…

自媒體多賬號如何切換不同定位才能做得更好

一、選擇稀缺增長的賽道&#xff0c;避開內卷紅海 1.職場賽道 ● 細分方向&#xff1a;公務員/體制內經驗分享、自由職業指南、遠程辦公技巧。例如&#xff0c;通過采訪自由職業者或分享遠程工作體驗&#xff0c;快速積累精準粉絲。 ● 優勢&#xff1a;職場人群需求明確&…

基于SpringBoot的校園二手交易平臺(源碼+論文+部署教程)

運行環境 校園二手交易平臺運行環境如下&#xff1a; ? 前端&#xff1a;Vue ? 后端&#xff1a;Java ? IDE工具&#xff1a;IntelliJ IDEA&#xff08;可自行更換&#xff09; ? 技術棧&#xff1a;SpringBoot Vue MySQL 主要功能 校園二手交易平臺主要包含前臺和…

iPhone 鏡像 連接錯誤

重置連接 defaults delete com.apple.ScreenContinuity打開 iPhone 鏡像 參考 mac鏡像iPhone無法連接報錯個人經歷的 iPhone 鏡像 bug 與部分解決辦法

Qt基礎入門-詳解

前言 qt之路正式開啟 &#x1f493; 個人主頁&#xff1a;普通young man-CSDN博客 ? 文章專欄&#xff1a;C_普通young man的博客-CSDN博客 ? 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有問題 評論區見&#x1f4dd; &#x1f389;歡迎大家點贊&#x1f44…

Unity 優化封裝常用API和編輯器擴展工具包

資源名&#xff1a;WXTools 文章目錄 MeshRenderEditorSpriteGroupToolWXEditorUtilsComponentUtilsDataUtilsGameObjectUtilsRigidbodyUtilsStringUtilsTransformUtilsVectorUtilsWXTools 內容包括&#xff1a; MeshRenderEditor mesh擴展 SpriteGroupTool SpriteGroup操作…

python學習第三天

條件判斷 條件判斷使用if、elif和else關鍵字。它們用于根據條件執行不同的代碼塊。 # 條件判斷 age 18 if age < 18:print("你還是個孩子&#xff01;") elif age 18:print("永遠十八歲&#xff01;") else:print("你還年輕&#xff01;")…