中序遍历:左儿子,我,右儿子

点击查看代码
void dfs(int u) {
if(u > n) return ;
dfs(u + 1);
cout << u << endl;
dfs(u + 1);
}

形式是:终止条件 + 逻辑式

搜索:本质是重复子问题

将规模大的问题转化为形式相同但规模更小的子问题,逻辑相同所以专注于实现本层的逻辑即可

且dfs(pos)含义:1···pos-1层已决定,现考虑第pos位情况

DFS:不断尝试更进一步,碰壁就回头,换一条路继续走

DFS答案会呈现出一颗搜索树的形式

对于回溯: 本质是当前层有x种情况, 当前选择一种, 对剩余x - 1种的考虑

BFS(顺序结构,有序性):逐层扩展

队列(First In First Out):先存一步能到的点,然后再存两步能到的点,再生成3步能到····,保证了离起点更近一定有先入队

BFS其中的队列优化,但其实本质是不用队列而是形式上处于类似分裂思想

例如:

点击查看代码
如迷宫问题:
每次可以分裂为4个情况走到下一个点,且有先分裂一定有比后分裂离起点更近,后分裂一定比起点更远

因BFS逐层扩展,所以当初次访问在k层,意味着走k步可以到达这个点

BFS框架:

1.建队
2.(非空时)将本层能拓展到的all点加入队列,并弹出本层

剪枝

记忆化搜索

使程序更简洁

DFS的两种状态表示形式:

全局变量存储:

int sum = 0;
void dfs(int u) {
if(找到答案) {
输出或统计 sum;
return;
}
for(枚举下一步操作) {
if(合法操作) {
sum = sum + a[i];
dfs(u + 1);
sum = sum - a[i];//此时需要对sum回溯
}
}
}

函数参数存储传递:

void dfs(int u, int sum) {
if(找到答案) {
输出或统计 sum;
return;
}
for(枚举下一步操作) {
if(合法操作) {
dfs(u + 1, sum + a[i]);//无须回溯
}
}
}

构造函数: 无赋值时为构造的默认值

STL容器中基本都包含构造函数,用来初始化STL

构造函数:

struct AK {
int x, y;
AK(int sx = 0, int sy = 0) {//构造函数与结构体同名,无须返回值
x = sx, y = sy;
}
}

调用:2种

AK tmp(1, 1);//在新创建的tmp中赋值即tmp.x和tmp.y
q.push(tmp);
//临时变量
q.push(AK(1, 1));

搜索&记忆化(重复子问题,逻辑相同)的更多相关文章

  1. skiing(搜索+记忆化搜索)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...

  2. 【蓝桥杯真题】地宫取宝(搜索->记忆化搜索详解)

    链接 [蓝桥杯][2014年第五届真题]地宫取宝 题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...

  3. P2690 接苹果(暴力搜索+记忆化)

    思路: 建树:就是在每一分钟进行分枝,是原地不动,还是移动.然后,走完整个过程. 但是,我其实还是走了弯路,因为,最开始想的是剪枝,没有用记忆化搜索.但是,肯定是能用dp来做,啊啊啊啊阿,能用dp肯定 ...

  4. BZOJ.5248.[九省联考2018]一双木棋chess(对抗搜索 记忆化)

    BZOJ 洛谷P4363 [Update] 19.2.9 重做了遍,感觉之前写的有点扯= = 首先棋子的放置情况是阶梯状的. 其次,无论已经放棋子的格子上哪些是黑棋子哪些是白棋子,之前得分如何,两人在 ...

  5. P4363 [九省联考2018]一双木棋chess(对抗搜索+记忆化搜索)

    传送门 这对抗搜索是个啥玩意儿…… 首先可以发现每一行的棋子数都不小于下一行,且局面可由每一行的棋子数唯一表示,那么用一个m+1进制数来表示当前局面,用longlong存,开map记忆化搜索 然后时间 ...

  6. [luogu]P1514 引水入城[搜索][记忆化][DP]

    [luogu]P1514 引水入城 引水入城 题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形 ,如下图所示,其中每个格 ...

  7. CodeForces1249B1/B2-Books Exchange-dfs-一般搜索+记忆化搜索

    一般搜索 注意:一般定义成void Books Exchange (easy version)  CodeForces - 1249B2 The only difference between eas ...

  8. 数位dp/记忆化搜索

    一.引例 #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an  ...

  9. poj--1579--(DFS+记忆化搜索之经典)

    记忆化搜索   记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用 动态规划的那种思想和模式作一些保存. 一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态. 更重要的是搜索还可以 ...

  10. uva 10651 - Pebble Solitaire(记忆化搜索)

    题目链接:10651 - Pebble Solitaire 题目大意:给出一个12格的棋盘,‘o'代表摆放棋子,’-‘代表没有棋子, 当满足’-oo'时, 最右边的棋子可以跳到最左边的位子,而中间的棋 ...

随机推荐

  1. MySQL 8.0 修改密码 新建用的正确方式

    mysql 更新完密码,总是拒绝连接.登录失败?MySQL8.0 不能通过直接修改 mysql.user 表来更改密码.正确更改密码的方式备注: 清空root密码MySQL8.0 不能通过直接修改 m ...

  2. Queue接口分析

    一.Queue是什么 该接口时Java集合框架成员 Queue: 通常(但不一定)队列就是一个先入先出(FIFO)的数据结构,和堆一样(但可以进行转换,比如优先级列队排序,又或者改为栈形式的后进先出数 ...

  3. 转:基于Redis实现延时队列

    摘要:使用 sortedset,拿时间戳作为score,消息内容作为 key 调用 zadd 来生产消息,消费者用 zrangebyscore 指令获取 N 秒之前的数据轮询进行处理.    前段时间 ...

  4. 「Log」做题记录 2023.10.30-2023.11.26

    \(2023.10.30-2023.11.5\) \(\color{blueviolet}{AT\_abc285\_g}\) 神秘题. 网络流是显著的,建边方式如下: 所有边容量都为 \(1\). 每 ...

  5. 2025 最野 AI 创业攻略!从 0 孵化爆款软件的底层逻辑:技术打磨 + 精准推广双杀

    小伙伴们,上一篇内容我们讲到了自身的核心优势,那么今天大黄给大家讲讲我们的发展愿景. 我们的目标: 成为学习AI编程路上必看的内容合集知识库! 项目案例全部由真人编写实现,从0到1毫不保留全部展示出来 ...

  6. ElasticSearch的映射与文档

    概述 映射官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping.html 映射(mapping)是ES中一 ...

  7. 长亭雷池WAF(safeline)社区版安装教程

    雷池WAF的技术文档,并不包含 Docker 和 Docker Compose V2 安装文档,更新记录一下,共同学习,共同进步 配置需求 操作系统:Linux 指令架构:x86_64 软件依赖:Do ...

  8. 合集 | AI应用实战学习总结系列文章

    大家好,我是Edison. 2024年入坑黄佳老师的<AI应用实战课>,过去的两个月来,通过12篇总结笔记记录下我的学习之旅,我个人收获颇多,也很感谢一直在阅读的你. 今天应部分网友的要求 ...

  9. 学习spring cloud记录10-nacos搭建集群

    前言 资源有限,在一台电脑上模拟搭建 搭建 新建数据库 新建nacos数据库,在下载的nacos压缩包中,config目录下有数据表,导入即可 配置nacos 进入nacos/conf目录下,修改cl ...

  10. MCP 核心架构解析

    引言 Model Context Protocol (MCP) 是一种为连接大型语言模型(LLM)应用而设计的通信协议,它建立在灵活.可扩展的架构基础上,旨在实现LLM应用程序与各类集成之间的无缝交互 ...