![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
fengzhongpiaoxing
为什么要这么干?怎么干最好?
展开
-
非递归的中序树遍历算法
CLRS 12.1-3:来源:http://www.cnblogs.com/shuaiwhu/archive/2011/04/20/2065055.html 给出一个非递归的中序树遍历算法。(提示:有两种方法,在较容易的方法中,可以采用栈作为辅助数据结构;在较为复杂的方法中,不采用栈结构,但假设可以测试两个指针是否相等。)转载 2015-05-16 18:59:25 · 992 阅读 · 1 评论 -
算法学习---红黑树
1、红黑树是二叉收索树的一种,可以保证在最坏情况系基本动态集合操作的时间复杂度为O(lgn)。本质是让树尽量均衡。 红黑树的定义(红黑树是在二叉收索树的基础上加上了下面的条件): (1)每个节点或是红色的,或是黑色的。 (2)根节点和叶结点是黑色的。(红黑树中将NIL结点定义为也节点,称为外部结点;把带关键字的结点视为树的内部结点)。 (3)如果一个结点是红色的,则它的两个子结点是黑色的(父原创 2015-06-01 17:08:37 · 278 阅读 · 0 评论 -
0-1背包问题
问题描述: 有n个物品,重量分别为w1,w2…wn,价值分别为v1,v2…vn,书包的容量为C。 由于每件物品只能装入或者不装入两种状态,不能重复装入,所以称为0-1背包问题。 求解:如何选择装入的物品使装入的物品的总价值最大。 约束条件:装入书包的物品的重量之和小于书包的容量。/*int w[N + 1] = {0,2,2,6,5,4}; //测试用例int v[N + 1] =原创 2016-08-22 00:56:48 · 485 阅读 · 0 评论 -
矩阵链乘法
问题描述: 在矩阵链乘的过程中,不同的相乘次序对于运算代价产生巨大的影响。本算法主要是采用动态规划的方法求解举证链乘的顺序,使得计算乘积所需要的标量乘法次数数量最少。 例如:对于A1:10*100,A2:100*5, A3:5*50规模的三个矩阵, 如果按((A1A2)A3)顺序计算,代价为10*100*5+10*5*50=7500;如果按照(A1(A2A3))顺序,计算代价为100*5*50+1原创 2016-08-22 01:22:48 · 481 阅读 · 0 评论 -
堆排序(最大堆)
#include<iostream>using namespace std;#define LEFT(i) (2*i)#define RIGHT(i) (2*i+1)#define PARENT(i) (i>>1)void EXCHANGE(int &x, int &y){ int temp; temp = x; x = y; y原创 2016-09-03 20:20:11 · 278 阅读 · 0 评论 -
匈牙利算法
匈牙利算法是用来求二分图的最大匹配的,它的核心问题就是找增广路径。匈牙利算法的时间复杂度为O(VE),其中V为二分图左边的顶点数,E为二分图中边的数目。 增广路的特性: (1)有奇数条边。 (2)起点在二分图的左半边,终点在右半边。 (3)路径上的点一定是一个在左半边,一个在右半边,交替出现。 (4)整条路径上没有重复的点。 (5)起点和终点都是目前还没有配对的点,而其它所有点都是已经配好原创 2016-08-25 20:55:27 · 476 阅读 · 0 评论 -
采用正则表达式处理XML标签
1、采用正则表达式先匹配带的标签, 2、通过正则表达式匹配context。 3、后面可以处理context的内容。 注意:目前:context 只能为 英文字符 、数字 、_ 三种字符,如果需要支持不同的字符,可以通过修改正则表达式达到目标。#include "stdafx.h"#include<iostream>#include<regex>#inclu...原创 2018-06-08 14:49:20 · 5569 阅读 · 0 评论