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…