搜索&记忆化(重复子问题,逻辑相同)
中序遍历:左儿子,我,右儿子
点击查看代码
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));
搜索&记忆化(重复子问题,逻辑相同)的更多相关文章
- skiing(搜索+记忆化搜索)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- 【蓝桥杯真题】地宫取宝(搜索->记忆化搜索详解)
链接 [蓝桥杯][2014年第五届真题]地宫取宝 题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...
- P2690 接苹果(暴力搜索+记忆化)
思路: 建树:就是在每一分钟进行分枝,是原地不动,还是移动.然后,走完整个过程. 但是,我其实还是走了弯路,因为,最开始想的是剪枝,没有用记忆化搜索.但是,肯定是能用dp来做,啊啊啊啊阿,能用dp肯定 ...
- BZOJ.5248.[九省联考2018]一双木棋chess(对抗搜索 记忆化)
BZOJ 洛谷P4363 [Update] 19.2.9 重做了遍,感觉之前写的有点扯= = 首先棋子的放置情况是阶梯状的. 其次,无论已经放棋子的格子上哪些是黑棋子哪些是白棋子,之前得分如何,两人在 ...
- P4363 [九省联考2018]一双木棋chess(对抗搜索+记忆化搜索)
传送门 这对抗搜索是个啥玩意儿…… 首先可以发现每一行的棋子数都不小于下一行,且局面可由每一行的棋子数唯一表示,那么用一个m+1进制数来表示当前局面,用longlong存,开map记忆化搜索 然后时间 ...
- [luogu]P1514 引水入城[搜索][记忆化][DP]
[luogu]P1514 引水入城 引水入城 题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形 ,如下图所示,其中每个格 ...
- CodeForces1249B1/B2-Books Exchange-dfs-一般搜索+记忆化搜索
一般搜索 注意:一般定义成void Books Exchange (easy version) CodeForces - 1249B2 The only difference between eas ...
- 数位dp/记忆化搜索
一.引例 #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an ...
- poj--1579--(DFS+记忆化搜索之经典)
记忆化搜索 记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用 动态规划的那种思想和模式作一些保存. 一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态. 更重要的是搜索还可以 ...
- uva 10651 - Pebble Solitaire(记忆化搜索)
题目链接:10651 - Pebble Solitaire 题目大意:给出一个12格的棋盘,‘o'代表摆放棋子,’-‘代表没有棋子, 当满足’-oo'时, 最右边的棋子可以跳到最左边的位子,而中间的棋 ...
随机推荐
- MySQL 8.0 修改密码 新建用的正确方式
mysql 更新完密码,总是拒绝连接.登录失败?MySQL8.0 不能通过直接修改 mysql.user 表来更改密码.正确更改密码的方式备注: 清空root密码MySQL8.0 不能通过直接修改 m ...
- Queue接口分析
一.Queue是什么 该接口时Java集合框架成员 Queue: 通常(但不一定)队列就是一个先入先出(FIFO)的数据结构,和堆一样(但可以进行转换,比如优先级列队排序,又或者改为栈形式的后进先出数 ...
- 转:基于Redis实现延时队列
摘要:使用 sortedset,拿时间戳作为score,消息内容作为 key 调用 zadd 来生产消息,消费者用 zrangebyscore 指令获取 N 秒之前的数据轮询进行处理. 前段时间 ...
- 「Log」做题记录 2023.10.30-2023.11.26
\(2023.10.30-2023.11.5\) \(\color{blueviolet}{AT\_abc285\_g}\) 神秘题. 网络流是显著的,建边方式如下: 所有边容量都为 \(1\). 每 ...
- 2025 最野 AI 创业攻略!从 0 孵化爆款软件的底层逻辑:技术打磨 + 精准推广双杀
小伙伴们,上一篇内容我们讲到了自身的核心优势,那么今天大黄给大家讲讲我们的发展愿景. 我们的目标: 成为学习AI编程路上必看的内容合集知识库! 项目案例全部由真人编写实现,从0到1毫不保留全部展示出来 ...
- ElasticSearch的映射与文档
概述 映射官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping.html 映射(mapping)是ES中一 ...
- 长亭雷池WAF(safeline)社区版安装教程
雷池WAF的技术文档,并不包含 Docker 和 Docker Compose V2 安装文档,更新记录一下,共同学习,共同进步 配置需求 操作系统:Linux 指令架构:x86_64 软件依赖:Do ...
- 合集 | AI应用实战学习总结系列文章
大家好,我是Edison. 2024年入坑黄佳老师的<AI应用实战课>,过去的两个月来,通过12篇总结笔记记录下我的学习之旅,我个人收获颇多,也很感谢一直在阅读的你. 今天应部分网友的要求 ...
- 学习spring cloud记录10-nacos搭建集群
前言 资源有限,在一台电脑上模拟搭建 搭建 新建数据库 新建nacos数据库,在下载的nacos压缩包中,config目录下有数据表,导入即可 配置nacos 进入nacos/conf目录下,修改cl ...
- MCP 核心架构解析
引言 Model Context Protocol (MCP) 是一种为连接大型语言模型(LLM)应用而设计的通信协议,它建立在灵活.可扩展的架构基础上,旨在实现LLM应用程序与各类集成之间的无缝交互 ...