
DFS
oj中常见的dfs题目
说文科技
同名公众号【说文科技】,做有态度的研究。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【洛谷】P5318 【深基18.例3】查找文献
首先明确问题是用dfs+bfs解决。使用边构建图,而非使用邻接矩阵;在bfs时需要将队列中的元素排序。原创 2021-08-29 20:18:15 · 559 阅读 · 0 评论 -
【洛谷】P1021 邮票面值设计
P1021 邮票面值设计(1)dfs+dp;(2)注意这种问题dp数组含义的令法很关键,我数次将这个dp[i]令成价值i是否可达。而真正的应该设成:到达价值i的最少需要的票数;(3)在dfs中的dp数组需要置零,因为是根据每次的选择都要重新计算;原创 2020-04-26 01:05:48 · 654 阅读 · 0 评论 -
深搜练习——生成树的子节点个数
给出一棵树,生成该树的子节点个数<p><\n></p>深搜原创 2020-04-12 02:32:42 · 800 阅读 · 0 评论 -
记忆化搜索专题
记忆化搜索专题训练0.前言有些时候朴素深搜会出现超时情况,所以诞生出一种记忆化搜索的dfs,其实它也是dfs,只不过在dfs的过程中,添加了赋值的过程,这个赋值的过程就叫做记忆。这里面会根据一些题目来讲解记忆化搜索。1.样例分析1.1 题目 络谷 P1434滑雪1.2分析找出每个坐标点*(x,y)* 的最大滑雪距离,并为其赋值,若下次还搜到了这个点,这直接返回这个值,而不用再次搜索...原创 2020-02-05 11:42:54 · 388 阅读 · 0 评论 -
n皇后问题
源码如下:#include#include#define maxn 1000double array[maxn];//全局变量 保存皇后的位置 int n;//n*n int count = 0;//是否是符合条件的点 currentRow当前行 bool isRight(int currentRow){ int i ; for(i = 1;i<原创 2018-01-25 20:48:44 · 401 阅读 · 0 评论 -
深搜练习—— 生成全排列
深搜练习—— 生成全排列0.总结Get to the key point firstly, the article comes from LawsonAbs!使用深搜+for循环深搜的同时记录选择的值,并在符合条件时输出【题外话】生成全排列是深搜的基本应用,务必熟练掌握!做了很多深搜的题之后,就会发现,生成全排列这种深搜思想是很多题的母题!1.前言使用dfs 输出数字n内的全...原创 2020-03-04 21:52:17 · 453 阅读 · 0 评论 -
深搜练习——P1189SEARCH
深搜练习——P1189 SEARCH1.题目见 链接2.思想step 1.找出在某点可以行进的长度len,得到之后使用for循环遍历,再判断下个点。step 2.如果已经走了n次了,那么到达的该点就是可疑点。但是如果只是单纯的dfs,只能得到三个样例的分数。接下来就是剪枝的事儿了。那么该怎么剪枝呢?先看下面这张图。针对给出的城市地图,以及行进序列,我给出了两种dfs方式,其中cur...原创 2020-03-02 22:47:42 · 455 阅读 · 0 评论 -
dfs刷题模板总结
dfs刷题模板总结0.前言本文主要讲解平常刷题中常用到的dfs,并总结出了基本套路模板。1.什么时候用dfs?(该用的时候用), 屁话dfs是经常使用的暴力解法。常常,其优化版本要么是记忆化搜索,要么就是dp。但是因为dfs很好想,而且很好实现(只要递归即可),所以dfs常常出现在题解中。2.如何用dfs?dfs出现的地方,常常对应的是多个选择的地方,选或者不选;放或者不放;做或者不...原创 2020-02-20 18:11:26 · 1446 阅读 · 1 评论 -
深搜优化
深搜优化【updating…】1.深搜是什么?2.深搜优化?深搜是很消耗资源和时间的一种方法,这里给出深搜方法的两种不同写法,并比较其中的效率:DFS1void DFS1(int s){ if(child[s].size()==0) return;//如果没有相邻节点了,则直接返回 vis[s]=true;//标记为已经访问了 for(int i=0;i<child[...原创 2019-01-25 18:22:24 · 918 阅读 · 0 评论 -
DFS之北大百炼1724
DFS专题之北大百炼1724先给出源码//AC #include #include #include using namespace std;int K,N,R;//面向对象的思想 --> 将路的信息抽象为一个结构体,然后存储 struct Road {int d,L,t;// destination length toll };vector ci原创 2018-01-27 20:05:20 · 736 阅读 · 0 评论 -
深搜练习——生成组合数
深搜练习——生成组合数#include<iostream>using namespace std; const int maxN = 10;int n,m;//从n个数中选择m个 int arr[maxN];int vis[maxN],use[maxN];int choose[maxN];//选择的结果集合 //start 是开始选择的下标; cnt 表示选了多少个...原创 2020-03-06 18:19:25 · 576 阅读 · 0 评论