DFS
景天的天
我害怕你心碎没人帮你擦眼泪
展开
-
poj 1321:棋盘问题
dfs的问题 需要注意的是在dfs的时候某个位置可以不放旗子 直接进行下一步dfs #include #include #include int x[10]; int tot,n,lol,sum; char m[10][10]; void dfs(int row,int lol) { int i; if(lol==tot)原创 2015-08-03 16:51:05 · 635 阅读 · 0 评论 -
PAT 1004 Counting Leaves
没说明说的吧。如果想用bfs的话。在pop的时候更新深度比较好。 #include <cstdio> #include <queue> #include <algorithm> #include <iostream> #include <time.h> #include <vector> using namespace st...原创 2018-08-14 18:38:48 · 211 阅读 · 0 评论 -
PAT 1106 Lowest Price in Supply Chain
差不多先生 我的差不多是天生 #include <cstdio> #include <queue> #include <algorithm> using namespace std; const int maxn = 100011; struct node{ double data; vector<int> child; }...原创 2018-08-06 18:54:34 · 139 阅读 · 0 评论 -
PAT 1094 The Largest Generation
水题。 #include <cstdio> #include <queue> #include <algorithm> #include <math.h> #include <vector> using namespace std; const int maxn = 111; int n,m; vector<int> ...原创 2018-08-06 17:32:28 · 129 阅读 · 0 评论 -
PAT 1103. Integer Factorization
范围内的p次方的数打表 vector直接等号赋值 dfs的思路,可以重复选,以打表内的数组每一组选或者不选为dfs的分支 注意剪枝 #include <iostream> #include <stdio.h> #include <cstring> #include <cstdio> #include <map> #include...原创 2018-08-01 10:44:31 · 188 阅读 · 0 评论 -
PAT 1021. Deepest Root
重拾PAT。学习了map.vector.set.迭代器,温习了并查集.dfs等等。 具体做法就是先dfs到一些点,再从这些点dfs,前后得到的点就是总的集合。 #include #include #include #include #include #include using namespace std; const int maxx = 10001; map > tree;原创 2018-01-09 19:23:20 · 164 阅读 · 0 评论 -
PAT 1021. Deepest Root
感觉自己贼菜。我就知道会有样例超时的。代码写的很繁琐。冗余度还很高。dfs写了两边。蠢得一笔。 第一个dfs找出最大的深度。第二个dfs把满足这个深度的所有节点都打印出来。 第一遍交的时候说我内存超出了。于是很萨比的换成横向二维的然后又写了一个函数表示两点之间是否有链接。 以及dfs函数如果带多个参数可以避免回溯时修改参数的尴尬。 #include #include #in原创 2017-02-22 15:03:43 · 362 阅读 · 0 评论 -
PAT 1018. Public Bike Management
这道题目对于好久没写代码的我 拿来练手还是挺不错的 首先 包含多个问题的最短路径问题 而且路径不唯一的时候 用dfs是最棒的 一旦所求的量不满足最小或者最大条件 直接回溯 非常方便 一个函数就可以搞定了 如果先最短路径算法再去求相关问题的话 没那么方便的 其次关于路径用vector(所谓变长数组)很方便 curpath.push_back(i); curpath原创 2017-02-20 18:48:40 · 619 阅读 · 0 评论 -
PAT 1076. Forwards on Weibo
用的是dfs,代码很简单, 可是最后一个样例超时了。 如下剪枝,但是还是超时, /*这种剪枝的想法就是如果你在第一层的时候 已经过了某节点,那么在第三层的时候你就不 需要再去遍历该节点了。因为底层的遍历情况 永远比高层丰富。 if(level minlevel[x]=level; else return原创 2016-09-06 10:13:43 · 578 阅读 · 0 评论 -
PAT 1003. Emergency
思路参考 计算最短路径的条数,用dfs会比较的好用。 注意dfs函数中的一些细节问题,比如递归结束后设置节点未访问。 dfs的参数设置,学习这种带多参的递归方法。 #include #include #include #include #include #include #include using namespace std; #define maxn 505 int原创 2016-08-07 20:33:00 · 395 阅读 · 4 评论 -
PAT 1053.Path of Equal Weight
你怎么那么熟练啊? #include <cstdio> #include <queue> #include <algorithm> #include <iostream> #include <time.h> #include <vector> using namespace std; const int maxn = ...原创 2018-08-15 16:35:47 · 163 阅读 · 0 评论