#1 深度优先搜索

深搜思想

DFS其实是针对图论的一种搜索算法,由一个节点出发,不撞南墙不回头式的遍历所有的节点。
在这里插入图片描述
如先遍历1,沿(1,2)遍历2,再沿(2,4)遍历4,撞南墙(边界条件)后返回2,继续下一条路径遍历5,返回,遍历6,返回发现以2为起始点的路径已经遍历完了,继续返回,遍历以1为起始点的下一条路径(1,3)从而遍历3,完成对所有点的遍历

首先深搜是通过递归来实现的,那递归就需要两个条件:1.调用自己 2.要有终止条件
先给出一个dfs的简单模版:

static void dfs(节点xx) {if (达到目标状态)  //{处理答案return ; //结束这条搜索路径}if (边界条件) return;  //判断边界for (查找所有可行的下一节点) //尝试每一种可能{ dfs(下一节点) //继续下一步}
}

根据代码总结一下dfs所需要的几个点:
1.确定该题目的目标状态和边界条件(最重要,边界条件也用来剪枝)
2.找到节点转移方式(找到遍历的路径)
3.达到目标状态后的处理(如计数,直接返回退出等)


讲个例题:n-皇后
首先这个题我们由第一排开始放棋子
1-1.目标状态:将n个皇后合法地放入到棋盘中
1-2.边界条件:a.当前点位于棋盘外;b.下一步无法合法实现
2.节点转移(路径):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XSS另类攻击(四)kali系统beef-xss安装和使用

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、环境说明 kali系统,ip:192.1…

k8s的ci/cd实践之旅

书接上回k8s集群搭建完毕,来使用它强大的扩缩容能力帮我们进行应用的持续集成和持续部署,整体的机器规划如下: 1.192.168.8.156 搭建gitlab私服 docker pull gitlab/gitlab-ce:latest docker run --detach --hostname 192.168.8.156 --publ…

SAP 生产订单批量报工(代码分享)

最近公司一直在对成本这块的业务进行梳理,影响比较大的就是生产这块的报工,经常会要求要批量的冲销报工,然后在继续报工,来调整生产订单的实际工时,前面的博客中已经给大家分享了批量冲销生产订单的代码, 下面给大家分享一下生产订单批量报工的代码 首先流程制造和离散制…

【算法】过桥

✨题目链接: 过桥 ✨题目描述 ✨输入描述: 第一行一个数n(2≤n≤2000) 接下来一行n个数a[i](1≤|a[i]|≤2000)表示浮块上的数字 ✨输出描述: 输出一行,表示对应的答案 ✨示例1 📍输入 4 2 2 -1 2 📍输出 2 📍说明 1…

HNCTF 2024 ez_pecp 冰蝎+CS流量分析

考点:冰蝎webshell流量分析CS4.x流量解密 给了两个 流量包 第一个 ctf1.pcapng 查看其HTTP请求 而在CS中流量特征是基于tls协议 http-beacon 通信中,默认使用 GET 方法向 /dpixel 、/__utm.gif 、/pixel.gif 等地址发起请求,而且下发指令的时候会请求 …

如何使用浔川AI翻译机?——浔川AI社

1 前言 对于“如何使用浔川AI翻译机?”这个问题,我们官方 总结出以下结论: 首先: 复制以下代码: # -*- coding: utf-8 -*- import tkinter as tk import tkinter.messagebox import pickle import random# 窗口 wi…

Jmeter压测中遇到的问题汇总

Jmeter使用过程问题总结 一、某个请求的请求体中有中文字段,执行后该请求无法成功 解决方法:在取样器的内容编码处加上UTF-8 二、遇到接口请求后报401,请求未授权(或者信息头管理器只写了cookie请求不成功) 解决方…

记录深度学习GPU配置,下载CUDA与cuDnn,安装tensorflow

目标下载: cuda 11.0.1_451.22 win10.exe cudnn-11.0-windows-x64-v8.0.2.39.zip Anaconda的安装请看别的博主的,这里不再赘述 看看自己电脑的cuda 方法一:打开英伟达面板查看 方法二:使用命令行 随便找个文件夹,在顶部路径输入"cmd" 输入下面命令 nvidia-smi 我…

小程序配置自定义tabBar及异形tabBar配置操作

什么是tabBar? 小程序的tabbar是指小程序底部的一组固定导航按钮,通常包含2-5个按钮,用于快速切换小程序的不同页面。每个按钮都有一个图标和文本标签,点击按钮可以切换到对应的页面。tabbar通常放置在小程序的底部,以…

开发一套家政上门预约服务系统需要运用的关键技术

家政上门预约服务系统开发是指建立一个在线平台或应用程序,用于提供家政服务的预约和管理功能。该系统的目标是让用户能够方便地预约各种家政服务,如保洁、家庭护理、月嫂、家电维修等,并实现服务供应商管理和订单管理等功能。 开发一套家政上…

01Linux以及操作系统概述

课程目标 1.了解现代操作系统的整体构成及发展历史 2.了解Linux操作系统及其分支版本 3.直观上理解服务器端与桌面端版本的区别 课程实验 1.通过对CentOS和Ubuntu的演示,直观理解Linux与Windows的异同 课堂引入 本章内容主要为大家详细讲解Linux操作系统(以下简…

PPT 隐藏开启对象图层

目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 制作PPT的时候,有时候需要在一张PPT放置多个依次出现的内容,然后设置对应的动画,要是需要对某个内容进行修改的话,就会很不方便,这个时候就需要使用&…

基于SpringBoot的旅游攻略信息系统的设计与实现

文档介绍 用户群体 针对已经学习过SpringBoot的同学,希望通过一个项目来加强对框架的应用能力,增加项目经验 针对需要完成大学期间的毕设项目的同学,可以通过此文档了解整个系统技术架构,为自己的毕设论文提供指导性建议 文档内容 此文档内容可以让学习此实战项目的同学有一…

webshell代码免杀

1.什么是WAF? Web Application Firewal(web应用防火墙),web应用防火通过执行一系列针对HTTP/HTTPS的安全策略来专门为web应用提供保护的一款产品,基本可以分为以下4种 软件型WAF:以软件的形式安装在服务器上面,可以接触到服务器…

MAB规范(1):概览介绍

前言 MATLAB的MAAB(MathWorks Automotive Advisory Board)建模规范是一套由MathWorks主导的建模指南,旨在提高基于Simulink和Stateflow进行建模的代码质量、可读性、可维护性和可重用性。这些规范最初是由汽车行业的主要厂商共同制定的&…

c#基础()

学习目标 了解:嵌套类,匿名类,对象初始化器 重点:类的定义以及对象,构造方法,this和static关键字 掌握:面向对象的概念,访问修饰符,垃圾回收 面向对象 面向对象的概…

2024年5月月终总结

一转眼4月份又过去了,按照年初的承诺,每月照例要写一个月总结,简单回顾下: 1) 英语学习继续进行: 百词斩: 不背单词: 每日英语听力: 2)中医学习每天15分钟,没有中断。 …

xxl-job的使用

介绍 在分布式中,很多微服务可能存在多实例部署的现象,如果在某个具体的微服务中实现一个定时任务,而该微服务存在多个实例的话,那么会导致该定时任务在不同实例中都会进行执行!这很容易导致脏数据、数据重复等问题&am…

远程继电器模块实现(nodemcu D1 + 继电器)

前言 接下来将实现一个远程继电器,实时远程控制和查询的开关状态。用 5v 直流电控制 220v 交流电。 硬件上: 使用 nodemcu D1 和 JQC-3FF-S-Z 继电器。 软件上: 使用 nodejs 作为服务端,和 html 作为客户端。 在开始之前在电脑…

Scrapy vs. Beautiful Soup | 网络抓取教程 2024

网络爬虫是任何想要从网上收集数据用于分析、研究或商业智能的人必备的技能。Python中两个最受欢迎的网络爬虫工具是Scrapy和Beautiful Soup。在本教程中,我们将比较这些工具,探索它们的功能,并指导你如何有效地使用它们。此外,我…