![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
搜索之dfs
qingniaofy
这个作者很懒,什么都没留下…
展开
-
poj 1088
题意,就是从所给的点中找出一个点,让这个点到最低端的长度最长。可以用 dp 或者 搜索,我用的是记忆化搜索dfs#include#includeconst int maxn=105;int snow[maxn][maxn];int d[maxn][maxn];int n,m;#define Max(a,b) ((a)>(b)?(a):(b))int dfs(int原创 2012-06-10 10:16:40 · 440 阅读 · 0 评论 -
poj 3321
给出一棵树,判断 以 某个 节点 为 根 的子树 有多少个节点有苹果。。知道要用树状数组求和,但是 每个子树节点编号不连续,头疼,后来看了一些大神的报告才 恍然大悟。可以先进行一次 dfs 后序遍历,对 每个节点重新编号,使子树的每个节点编号连续,并且根节点编号最大,同时要记录每棵子树的范围即 子树 的最大编号和最小编号,然后 树状数组。。ps:建树也不太会。。#include原创 2012-07-10 00:21:07 · 768 阅读 · 0 评论 -
hdu 4414 2012杭州网络赛
给出一个图,要求 图中‘#’组成了多少个 十字架,要注意十字架的宽度是奇数,比赛的时候队友 dfs过的,不过我这样做也挺快。。思路:对每个‘#’进行判断,上下左右 ,步长为1 ,2,。。。25里面是不是都是符合条件,符合的话判断是不是个数为奇数即可#include#includeconst int maxn=55;char map[maxn][maxn];int原创 2012-09-23 22:06:41 · 1284 阅读 · 0 评论 -
poj 1128 Frame Stacking
题意: 给出 h*w的图形,要求字母框 自底向上的 叠加顺序,有多种顺序要按字典序全部输出。一开始没想到思路,后面发现其实只要 构图+拓扑排序 即可。。构图为 如果 一个字母框 的边界上有其他字母,那么就 将 edge[][] 标记为1,同时 将该字母 的入度 in +1,而前面提到的其他字母 判断入度 ,标记为 0,进行 拓扑排序,即 首先 找到一个 入度为 0 的点,删除,然后 将跟该原创 2013-02-17 01:52:33 · 1840 阅读 · 1 评论 -
poj 2488 DFS水过
题目给出 n行m列的棋盘,问马可以全部的棋盘格都走过一遍吗,马以 L 型走很土的办法,枚举起点,然后进行dfs并记录路径,注意要输出 字典序最小的一条路径,所以按照 程序中的 dx,dy方向数组就可以搞定了。。#include #include #include #include using namespace std;const int maxn = 30原创 2013-02-28 20:39:02 · 3114 阅读 · 0 评论 -
poj 1321 棋盘问题
思路:dfs,按行顺序,一行一行往下搜索,对 列 进行判断是否已经占领即可#include#include#include#includeusing namespace std;const int maxn=10;char map[maxn][maxn];bool usedy[maxn];int n,k,ans;void dfs(int x,int cnt){ if原创 2013-03-16 22:13:17 · 774 阅读 · 0 评论