深度优先搜索题目
Dfs
IOv0id
这个作者很懒,什么都没留下…
展开
-
LeetCode79. 单词搜索
DFS原创 2022-10-12 22:02:12 · 103 阅读 · 1 评论 -
DFS代替n重循环---洛谷P1149 火柴棒等式
#include<iostream>using namespace std;int n,cnt=0,b[4],torch[1001] = { 6,2,5,5,4,5,6,3,7,6 };//b储存a,b,c三个数void dfs(int k){ if (n < 0) return; int j; for (j = 0; j < 999; j++) { b[k] = j; n = n - torch[j]; if (k == 3 &&am.原创 2022-03-27 14:31:48 · 127 阅读 · 0 评论 -
深度优先搜索小总结
一.对于有明显起点的题目,可以联想图的形式进行DFS;二.对于起点不明显的题目,可以将题目中的状态分步或者说分类,以实现不同分支继续进行DFS;这种状态需要自行判断找出,一般要找状态数目少的,这样的话,每一次dfs中函数调用的次数就少。比如洛谷P3392 涂国旗P3392 涂国旗 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn),题目要求一个坐标系中每一行涂一种颜色,共给出三种颜色,且三种颜色顺序必须是白,蓝,红;该题的状态可以是1.判断每一行可以涂多少种颜色2.前i行涂原创 2022-03-27 00:02:29 · 378 阅读 · 0 评论 -
洛谷P1157 组合的输出
#include<iostream>using namespace std;int n,r,a[100],m=0;void dfs(int k, int cnt){ if (cnt == r) { for (int l = 0; l < cnt; l++) printf("%3d", a[l]); cout << endl; return; } if (k + 1 > n) return; a[m++] = k+1; dfs(k.原创 2022-03-27 00:01:47 · 582 阅读 · 0 评论 -
洛谷P1101 单词方阵
#include<iostream>#include<string>#include<cstring>using namespace std;int cnt = 0,k=0,l=0,n,fndx[10000],fndy[10000],color[1000][1000], tmpr[100000], tmpc[100000];int dx[8] = { 1,1,0,-1,-1,- 1,0,1 }, dy[8] = { 0,-1,-1,-1,0,1,1,1 };/.原创 2022-03-26 12:26:59 · 636 阅读 · 0 评论 -
回溯时机与种类+洛谷P1605 迷宫
回溯时机:当一个节点的一条分支走完回到该节点后,这个节点的其他分支会受到沿前一个分支搜索时改变的值的影响时,需要回溯。而这个值往往是全局变量,且不在终止条件中。不要用到回溯的例题:(9条消息) 洛谷P2036 [COCI2008-2009#2] PERKET_IOv0id的博客-CSDN博客下面一题即用到回溯。洛谷P1605 迷宫:#include<iostream>#include<cstring>using namespace std;in原创 2022-03-25 23:36:40 · 119 阅读 · 0 评论 -
洛谷P2036 [COCI2008-2009#2] PERKET
基础DFS:#include<iostream>#include<cstring>using namespace std;//对每个配料:1.用 2.不用int n, a[20], c[20],ans=2<<20;void dfs(int s,int b,int i){ if (i == n)//每种情况有各自的最小值 { if (s == 1 && b == 0)//除去一个都不用--清水 return; ans =原创 2022-03-25 21:05:33 · 375 阅读 · 0 评论 -
浅尝剪枝算法
算最短路径等问题:1.中间路径值与已尝试的终点路径值进行比较;2.中间路径值与已尝试的中间路径值进行比较(一般比较条件可能不止一个);原创 2022-03-23 22:17:03 · 358 阅读 · 0 评论