算法笔记
文章平均质量分 59
暗金色
这个作者很懒,什么都没留下…
展开
-
中序和后序便利二叉树(非递归)
如果没有用递归的话,就要用栈保存之前的节点中原创 2014-10-14 23:16:34 · 875 阅读 · 0 评论 -
flody算法
正如我们所知道的,Floyd算法用于求最短路径。Floyd算法可以说是Warshall算法的扩展,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3)。Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所以,我们假设Dis(AB)为节点A到节点B的最短路径的距离,对于每一个节点X,我们检查Dis(AX) +转载 2014-10-22 16:42:05 · 823 阅读 · 0 评论 -
优先队列
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~百度百科上这样描述的: 优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素 优先队列的类定义 优先队列是0个或多个元素的集合,每个元素都有一个优先权或转载 2014-10-31 20:56:56 · 619 阅读 · 0 评论 -
六类qsort排序方法
前一段时间做题觉得qsort函数很好用,但有时不太会用比如按结构体一级排序、二级排序、字符串排序等,故通过查资料将其整理一番。以下是其具体分类及用法(若无具体说明是以降序排列):1、对一维数组排序:(Element_type是一位数组中存放的数据类型,可以是char, int, float, double, etc )int Comp(const void *p1,const vo转载 2014-12-21 18:25:57 · 563 阅读 · 0 评论 -
环形数组的最大连续和
给出一个长度为n的数组,这个数组构成一个环,要求求出最大的连续和是多少结果只可能有两种: 一种是没有跨越边界的,即在本来的0到n-1个内求出最大值 另一种是将这些数变成其相反数,求一下这个相反数数组中的最大连续和,然后再用整个数组的和(没有变成相反数的数组)加上这个最大连续和,这样的结果就是一个跨越了边界的数组的最大连续和了,因为加上了一个最大连续和,就相当于在原数组上挖去了这段连续的子序列,因转载 2015-04-16 15:27:26 · 1735 阅读 · 0 评论 -
动态规划的记忆搜索与递推
#include#include#includeusing namespace std;const int maxn = 10;int n;int d[maxn][maxn],a[maxn][maxn];int ans;int dp1(int i, int j) { if(d[i][j] >= 0) return d[i][j]; else return d[i转载 2014-11-09 20:14:35 · 731 阅读 · 0 评论