题目大意:
求出每一个结点距离叶子节点的最大距离。
思路分析:
假设1为树的根。
通过一遍dfs 可以求出每个节点到儿子节点上的叶子节点的最远距离。
然后我们要做的就是如果更新答案。
问题就是如果我们开始求的最大值本来就是一个儿子更新的,如果再深搜的话又会造成重复更新。
所以就记录两个值,最大值和次大值。
然后不断更新这两个值。
#include
#includ...
分类:
其他好文 时间:
2014-08-18 18:44:32
阅读次数:
225
在刚刚写完代码的时候才发现我以前交过这道题,可是没有过。后来因为不理解代码,于是也就不了了之了。可说呢,那时的我哪知道什么DFS深搜的东西啊,而且对递归的理解也很肤浅。这道题应该算HDU 2610 Sequence one的简化版,判重也非常简单。其他也没有什么好说的了,直接上代码吧。 1 //#d...
分类:
其他好文 时间:
2014-08-18 00:07:03
阅读次数:
207
本文参考Matrix67的位运算相关的博文。顺道列出Matrix67的位运算及其使用技巧 (一) (二) (三) (四),很不错的文章,非常值得一看。 主要就其中的N皇后问题,给出C++位运算实现版本以及注释分析。 皇后问题很经典,就不再赘述问题本身,解决皇后问题,一般采用的都是深搜DFS+回溯.....
分类:
其他好文 时间:
2014-08-17 22:45:32
阅读次数:
231
题目链接
题意:给出x和正整数n,问最少需要几次乘除法 可以得到n = x^m
思路:其实是关于指数的操作,即从1到m最少的步数。我们可以先确定最少步数m,然后进行迭代,迭代的过程也就是判断通过相加减所得到的数可以在m次操作中等于n,如果可以的话,m即为最小步数,如果不行的话,m++,进行下一次迭代。
代码:
#include
#include
#include...
分类:
其他好文 时间:
2014-08-17 21:27:12
阅读次数:
204
题意:。。。
典型的深搜,就是处理对角线的时候有些意外。
代码(注释掉的就是深搜,因为我不打表的话 TL):
#include
int c[11], n, ans;
int res[10] = {1, 0, 0, 2, 10, 4, 40, 92, 352, 724};
/*void dfs(int cur)
{
if(cur == n) {
++ans;
return ;
}
...
分类:
其他好文 时间:
2014-08-17 15:36:32
阅读次数:
146
题目链接
题意:给一个数n,要你找出一个以n为结尾的序列,使得这个序列中的任意一个数(1除外),能由序列中的两个数(可以相同)相加得到。求最短的序列,如有多种组合,任意输出一个。
思路:要迭代+DFS,首先我们可以得到要使序列尽量短的话,那么n最好是能由n/2相加得到,所以我们就可以得到最小深度depth,以depth为基础,进行深搜,如果满足的话就输出,如果不符合的话,再...
分类:
其他好文 时间:
2014-08-16 13:52:54
阅读次数:
253
简单的深度搜索就可以了,看见有人说什么使用并查集,那简直是大算法小用了。
因为可以深搜而不用回溯,故此效率就是O(N*M)了。
技巧就是增加一个标志P,每次搜索到池塘,即有W字母,那么就认为搜索到一个池塘了,P值为真。
搜索过的池塘不要重复搜索,故此,每次走过的池塘都改成其他字母,如'@',或者'#',随便一个都可以。
然后8个方向搜索。
#include
#include
#inc...
分类:
其他好文 时间:
2014-08-15 23:51:10
阅读次数:
519
题意:。。。
策略:深搜.
仔细分析我们发现,我们只需要对列进行标记,对于行我们考虑放棋子还是不放就行了。
代码:
#include
#include
char s[10][10];
int n, m;
int vis[10];
int ans;
void dfs(int cur, int step)
{
if(step == m){
ans ++;
return;
}
if...
分类:
其他好文 时间:
2014-08-15 09:30:27
阅读次数:
153
题意:从2出发,要到达3, 0可以通过,碰到1要停止,并且1处要变成0, 并且从起点开始沿着一个方向要一直前进,直至碰到1(或者3)处才能停止,(就是反射来反射去知道反射经过3).如果反射10次还不能到达3,就输出-1.
策略:深搜。
易错点,方向不容易掌握,并且,出题人把n, m顺序反了。
代码:
#include
#include
int map[25][25];
int ans, n...
分类:
其他好文 时间:
2014-08-14 23:55:36
阅读次数:
236
题目链接:http://poj.org/problem?id=1979思路:典型的搜索题,个人感觉广搜深搜皆可以,我用深搜做的。代码: #include using namespace std;int startx,starty;//开始的位置 int n,m;//行数和列数 char e[21]....
分类:
其他好文 时间:
2014-08-14 10:29:28
阅读次数:
245