摘要: 题目描述 对于两个字符串,请设计一个高效算法,求他们的最长公共子序列的长度,这里的最长公共子序列定义为有两个序列U1,U2,U3...Un和V1,V2,V3...Vn,其中Ui&ltUi+1,Vi&ltVi+1。且A[Ui] == B[Vi]。 给定两个字符串A和B,同时给定两个串的长度n和m,请返 阅读全文
posted @ 2018-05-12 20:05 Lune-Qiu 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 01背包问题:每件物品只有一件,可以选择放或不放(即取0件或1件,故名01) 代码很短: 1、最多能创造多少价值? 初始化: 代码: 优化空间后的如下: 2、背包放满时,最多(最少)能创造多少价值? 这个问题的前提是背包必须要放满,所以我们的初始条件要改变,原来我们可以一件东西都不放,这是最大的价值 阅读全文
posted @ 2018-05-12 16:22 Lune-Qiu 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题目描述 对于两个字符串,请设计一个时间复杂度为O(m*n)的算法(这里的m和n为两串的长度),求出两串的最长公共子串的长度。这里的最长公共子串的定义为两个序列U1,U2,..Un和V1,V2,...Vn,其中Ui + 1 == Ui+1,Vi + 1 == Vi+1,同时Ui == Vi。 给定两 阅读全文
posted @ 2018-05-12 16:21 Lune-Qiu 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 创建排序二叉树:插入时,从根开始遍历。 如果比根小,判断有没有左节点,有则向左走,没有则将该节点作为左节点。 如果比根大,判断有没有右节点,有则向右走,没有则将该节点作为右节点。 初级版代码: 升级版代码: 阅读全文
posted @ 2018-05-12 16:04 Lune-Qiu 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 深度遍历: 递归版:递归方法一定要记得加结束条件。三种遍历只是输出语句位置不同。 前序: 中序: 后序: 非递归版:辅助栈完成,后序遍历和前序,中序有所差别,因为后序树最后输出根,找到右孩子,还要保留根,不弹出。 前序: 中序:与前序遍历只改变了输出语句的位置 后序:先输出根的右孩子,再输出根,所以 阅读全文
posted @ 2018-05-12 12:20 Lune-Qiu 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 创建二叉树:输入0结束 创建二叉树:输入#结束,需要注意的是%c读入空格和换行,所以输入的时候要一连串输入, 测试数据:124##5##36### 前序输出结果为:124536 函数为前序插入,只能为前序插入。因为必须确定根才能,建立左孩子和右孩子 将数组元素作为前序遍历的结果建立二叉树: 根从0开 阅读全文
posted @ 2018-05-12 12:07 Lune-Qiu 阅读(924) 评论(0) 推荐(0) 编辑