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 · 210 阅读 · 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 · 138 阅读 · 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 · 128 阅读 · 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 · 186 阅读 · 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 · 163 阅读 · 0 评论 -
PAT 1021. Deepest Root
感觉自己贼菜。我就知道会有样例超时的。代码写的很繁琐。冗余度还很高。dfs写了两边。蠢得一笔。第一个dfs找出最大的深度。第二个dfs把满足这个深度的所有节点都打印出来。第一遍交的时候说我内存超出了。于是很萨比的换成横向二维的然后又写了一个函数表示两点之间是否有链接。以及dfs函数如果带多个参数可以避免回溯时修改参数的尴尬。#include#include#in原创 2017-02-22 15:03:43 · 361 阅读 · 0 评论 -
PAT 1018. Public Bike Management
这道题目对于好久没写代码的我拿来练手还是挺不错的首先 包含多个问题的最短路径问题而且路径不唯一的时候用dfs是最棒的一旦所求的量不满足最小或者最大条件直接回溯 非常方便一个函数就可以搞定了如果先最短路径算法再去求相关问题的话没那么方便的其次关于路径用vector(所谓变长数组)很方便curpath.push_back(i);curpath原创 2017-02-20 18:48:40 · 618 阅读 · 0 评论 -
PAT 1076. Forwards on Weibo
用的是dfs,代码很简单,可是最后一个样例超时了。如下剪枝,但是还是超时, /*这种剪枝的想法就是如果你在第一层的时候 已经过了某节点,那么在第三层的时候你就不 需要再去遍历该节点了。因为底层的遍历情况 永远比高层丰富。 if(level minlevel[x]=level; else return原创 2016-09-06 10:13:43 · 576 阅读 · 0 评论 -
PAT 1003. Emergency
思路参考计算最短路径的条数,用dfs会比较的好用。注意dfs函数中的一些细节问题,比如递归结束后设置节点未访问。dfs的参数设置,学习这种带多参的递归方法。#include#include#include#include#include#include#includeusing namespace std;#define maxn 505int原创 2016-08-07 20:33:00 · 394 阅读 · 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 · 161 阅读 · 0 评论