递归就是直接或间接调用自身。算法思想:原问题可分解子问题(必要条件),原与分解后的子问题相似(递归方程),分解次数有限(子问题有穷),最终问题可直接解决(递归边界),经典问题有:幂运算、阶乘、组合数、斐波那契数列、汉诺塔等。这里详细介绍:
快速幂的实现;
斐波那契数列的矩阵加速实现;...
分类:
其他好文 时间:
2014-08-17 21:26:22
阅读次数:
397
谜题45:令人疲惫不堪的测验 收获:(1)递归调用的先序便利二叉树,以后在理解递归时可以做出书上所示的递归二叉树。这个图的好处是,指出了递归的深度+递归叶子层+调用的顺序(通过在每条线加上调用序号)。(2)JVM的栈深度默认是1024;这也就导致本题的线序遍历二叉树边数过多,永远不会抛出stack....
分类:
编程语言 时间:
2014-08-17 21:09:43
阅读次数:
231
题目大意:
给出一组合法的括号。
括号要么不涂颜色,要么就涂上红色或者绿色。
匹配的括号只能有一个有颜色。
两个相邻的括号不能有相同的颜色。
思路分析:
因为是一个合法的括号序列。
所以每个括号与之匹配的位置是一定的。
那么就可以将这个序列分成两个区间。 (L - match[L] ) (match[L]+1, R)
用递归先处理小区间,再转移大区间。
...
分类:
其他好文 时间:
2014-08-17 17:04:42
阅读次数:
206
1 /* 2 * 二叉树 3 * 4 * (将完全二叉树的数组形式改为链表形式) 5 * 6 * 1 7 * 2 3 8 * ...
分类:
其他好文 时间:
2014-08-17 11:39:16
阅读次数:
345
题目:给定一棵二叉树,将所有的结点都放到左儿子的位置,即除了root结点外,每一个结点都是其他某一个结点的左儿子。不用保持某种顺序,不能递归,O(1)空间。思路:我的想法是,维持一个遍历指针p,另一个指针tail永远指向向左遍历到底的结点;初始化p和tail都为root,开始循环:如果p为叶子结点,...
分类:
其他好文 时间:
2014-08-17 11:34:42
阅读次数:
198
一周总结树状dp:在一棵树上进行状态转移,一般在树上遍历的时候,有返回到父节点的有不需要返回的,有无根树的遍历(即任意一点都可作为一个根),但状态方程的转移还是从父结点到儿子节点的递归转移。Hdu1296题意:求任意一个点作为根,求该树的半径两次dfs第一次求出以该点为根的最大距离和次大距...
分类:
其他好文 时间:
2014-08-17 10:20:42
阅读次数:
205
原理和方法可以参考: 图的深度优先遍历教科书上的C代码,递归: 1 //教科书方法,邻接表 2 bool visited[MAX]; 3 void visitFunc(int v); 4 5 void dfsTraverse(Graph G) 6 { 7 for(v = 0; v vis...
分类:
其他好文 时间:
2014-08-17 03:44:27
阅读次数:
243
67.俩个闲玩娱乐(运算)。2.n 个骰子的点数。把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 S。输入 n,打印出 S 的所有可能的值出现的概率。思路:用递归把每个骰子的可能情况变量,记录各种和S出现的次数 比上 总情况数就是概率/*67.俩个闲玩娱乐(运算)。2.n 个骰子的点数。把 n...
分类:
其他好文 时间:
2014-08-16 23:38:31
阅读次数:
235
#include #include using namespace std;#define MAX 100 //字符串最大长度typedef struct Node //二叉树结点{ char data; Node *lchild,*rchild;} *B...
分类:
其他好文 时间:
2014-08-16 22:23:51
阅读次数:
266
66.颠倒栈(栈)。题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶。思路:我自己没做出来,因为总觉得用不上递归。看了网上答案http://blog.csdn.net/cxllyg/article/details...
分类:
其他好文 时间:
2014-08-16 21:05:01
阅读次数:
144