竞赛知识点4【搜索】

2023-11-04

复习

栈和队列的概念

  • 栈是限定仅在表头进行插入和删除操作的线性表(先进后出)。
  • 队列是只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。

  • 树是一种数据结构,它是由 n ( n ≥ 1 ) n (n\geq1) n(n1) 个有限节点组成一个具有层次关系的集合。把它叫做
    “树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的
    特点:
    • 每个节点有零个或多个子节点
    • 没有父节点的节点称为根节点
    • 每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子

    在这里插入图片描述

• 通过不停的试探去寻找解的一种算法。与其说是一种算法,不如说是一种方法。

• 基础的方法有暴力的搜索法,深搜,广搜三种。

• 更高级的有IDDFS,DBFS,A*,IDA*等等。

1.1、深度优先搜索(dfs)

1.1.1、概念

“一条道走到黑”、 “走不了了再倒回去。”

算法过程:

VOID DFS(状态 A)

  1. 判断当前的状态是否合法。合法则继续执行,否则则回到上次调用。
  2. 先下走一层,也就是调用DFS(状态 A + Δ)

1.1.2、例题

1、输出n个数的全排列

1,2,3组成的全排列为:

  • 123
  • 132
  • 213
  • 231
  • 312
  • 321
  • 可以写 n 重 for 循环
  • 可以用 stl 里面的 next_permutation

递归的来想这个问题,以1,2,3,4为例:
• 如果第一个数固定为1的话
• 后面就跟着2,3,4的全排列—— 所以就相当于是原问题的子问题的求解
• 考虑用递归解决

Void dfs(已经固定了前k-1个数剩下的数的全排列,是哪k-1个数通过标记该数字用没用过
来显示,当前这一步的任务就是把第k个数放上去)
{
   
	如果 已经求出来了 k>n 输出, 返回
 	否则 i从1到n循环
 	如果i没有用过,那么就将i固定在当前位置上,并调用 dfs(k+1)
 	在调用完dfs(k+1)后需要将固定在当前位置上的i拿走
}

void dfs(int dep)
{
   
	if(dep>n)
	{
   
		write();
		return;
	}	
	for(int i=1;i<=n;i++)
	{
   
		if(!vis[i])
		{
   
			vis[i]=1;
			a[dep]=i;
			dfs(dep+1);
			vis[i]=0;
		}
	}
}
2、输出n个数中选m个的组合
3、N皇后(8皇后的升级版)

N ∗ N N * N NN 的棋盘上放置 N ( n ≤ 13 ) N(n\leq13)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

竞赛知识点4【搜索】 的相关文章

  • Spring Boot 如何处理国际化

    Spring Boot 国际化 在全球化的今天 很多应用程序需要支持多种语言和地区 为了满足不同用户的需求 应用程序需要提供多语言的支持 Spring Boot 提供了强大的国际化支持 使得开发人员能够轻松地为应用程序添加多语言支持 本文将
  • Flutter的Stack和Positioned的控件

    简介 Flutter中的Stack控件是一种可用于将多个子控件重叠在一起的布局控件 Stack将所有子控件放在同一个位置 它们可以根据需要进行定位 缩放或旋转 Stack中的子控件可以是任何类型的控件 例如文本 图像 按钮等 主要属性 St
  • ImageRewrad

    ImageReward Learning and Evaluating Human Preferences for Text to Image Generation https arxiv org pdf 2304 05977 pdf ht

随机推荐

  • 雪花算法实现

    文章目录 原理 引入依赖 SnowflakeManager 生成ID SnowflakeProperties 配置 注册SnowflakeManager snowflake的yaml 测试 原理 分别有三部分 其中第一位保留位 暂时没用 第
  • C++全局变量被多次析构导致程序崩溃的问题

    问题描述 1 在静态库libxxx a中定义了一个全局的string对象 2 有多个so文件都连接了这个静态库 并且引用了这个全局变量 3 有一个程序同时加载了多个上述的so文件 4 在这个程序退出时 全局的string就会被多次析构 5
  • vue正式环境与测试环境压包配置方法

    1 安装cross env cnpm install save dev cross env package json配置修改 这里分别添加env config prod env config dev来控制当前的压包环境 package js
  • 互联网网站的反爬虫策略浅析

    因为搜索引擎的流行 网络爬虫已经成了很普及网络技术 除了专门做搜索的Google Yahoo 微软 百度以外 几乎每个大型门户网站都有自己的搜索引擎 大大小小叫得出来名字得就几十种 还有各种不知名的几千几万种 对于一个内容型驱动的网站来说
  • org.springframework.context.annotation.ConflictingBeanDefinitionException异常处理

    问题描述 项目启动时 报了这个错 org springframework context annotation ConflictingBeanDefinitionException 标记为Bean类 com gaotai zhxy prop
  • 在vmware环境下安装ubuntu

    在vmware环境下安装ubuntu18 04 1 下载VMware workstation16 2 下载ubuntu 18 04 5 3 安装vmware 创建虚拟机 一 VMware workstation16 下载链接 https p
  • 10、CLASSIFIER-FREE DIFFUSION GUIDANCE

    简介 论文 https arxiv org pdf 2207 12598 pdf 分类器指导将扩散模型的得分估计与图像分类器的梯度相结合 因此需要训练与扩散模型分开的图像分类器 实验证明 在没有分类器的情况下 指导确实可以由纯生成模型执行
  • sed全文字符串替换

    sed i s 被替换的内容 要替换成的内容 file sudo sed i s archive ubuntu mirrors aliyun etc apt sources list
  • 抖音rpc调用生成x-gorgon、x-argus签名学习记录

    一 通过jadx gui分析apk 找到签名入口函数如下 先hook下这个函数 能看到有结果 接下来就是构造参数模拟调用就行 有两个参数 第一个是url的拼接 第二个是headers里面的一些参数构成的map 这个参数每个接口可能不一样 我
  • 若依ruoyi改皮肤-主题(二)

    一 风格等基础设置 有深色和浅色风格两种 根据设计图考虑是否需要 如果不需要 去掉一种风格 这里以浅色风格为主 在 布局设置 里 可以设置主题风格 深浅 主题颜色 直接下拉修改主色 隐藏菜单 顶部标签等等 如果想在css里修改 1 主题风格
  • 30套JSP网站源代码合集

    JSP技术是以Java语言作为脚本语言的 JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序 我收集了一些JSP开发的网站源代码 从实践中学习 希望对大家有用 资料名称 下载地址 网上购物系统 jsp mysq
  • 原根

    定义 在数论 特别是整除理论中 原根是一个很重要的概念 对于两个正整数 由欧拉定理可知 存在正整数 比如说欧拉函数 即小于等于的正整数中与互素的正整数的个数 使得 由此 在时 定义对模的指数 为使 成立的最小的正整数 由前知 一定小于等于
  • nodejs接收form-data数据

    nodejs接收form data类型的数据 不能使用body parser来解析接收 multiparty有多个监听方法 这只是其中一种 var multiparty require multiparty var fs require f
  • 软件压力测试和性能测试分析方法论

    压测和性能分析方法论 性能测试基础 性能测试的常见分类 性能测试 用来验证系统的性能是否满足设计的预期 一般来说对系统的压力会比较小 不会压垮系统 只是进行简单的验证 负载测试 通过不断施加负载压力 寻找系统最优的处理能力 最好的性能状态
  • 北京题库插件:没法登陆又何妨?

    背景介绍 什么是北京题库 北京题库 是专注于中小学教学产品研发的教研平台 拥有试卷 资料等优质资源 致力于为教师备课 教研提供一站式服务 百度百科 简单来说 收录的很多资料 相对好用一点 但是 其使用是有一定限制的 比如网页端必须要微信扫码
  • void与void*

    void与void void关键字的使用规则 1 如果函数没有返回值 那么应声明为void类型 2 如果函数无参数 那么应声明其参数为void 3 如果函数的参数可以是任意类型指针 那么应声明其参数为void 4 void不能代表一个真实的
  • SISD、MIMD、SIMD、MISD计算机的体系结构的Flynn分类法

    1 计算平台介绍 Flynn于1972年提出了计算平台的Flynn分类法 主要根据指令流和数据流来分类 共分为四种类型的计算平台 如下图所示 单指令流单数据流机器 SISD SISD机器是一种传统的串行计算机 它的硬件不支持任何形式的并行计
  • Elasticsearch 开启https鉴权

    Elasticsearch 早期的版本配置鉴权 由于插件收费 所以配置起来比较麻烦 但是最近发现Elasticsearch的8 2版本中可以配置https及鉴权的操作 所以记录一下给想要获取该知识的人 分享一下 第一步 修改elastics
  • Android开发屏幕适配方案

    由于Android系统的开放性 任何用户 开发者 硬件厂商和运营商都可以对Android系统和硬件进行定制 修改成他们自己所需要的样子 使得随着Android设备的增多 设备碎片化 系统碎片化 屏幕尺寸碎片化和屏幕碎片化的程度也在不断加深
  • 竞赛知识点4【搜索】

    文章目录 复习 栈和队列的概念 树 1 1 深度优先搜索 dfs 1 1 1 概念 1 1 2 例题 1 输出n个数的全排列 2 输出n个数中选m个的组合 3 N皇后 8皇后的升级版 4 马踏棋盘 1 1 3 DFS大体框架 1 1 4 剪