Python 使用list实现队列 (基于class, 包含迭代器)...
分类:
编程语言 时间:
2015-01-30 17:43:45
阅读次数:
283
Python 使用单链表实现堆栈 (基于class, 包含迭代器)...
分类:
编程语言 时间:
2015-01-28 16:06:11
阅读次数:
241
Python 使用list实现堆栈 (基于class, 包含迭代器)...
分类:
编程语言 时间:
2015-01-27 18:35:59
阅读次数:
179
软件的核心竞争力就是一个软件做出来难以模仿。当一个软件上市后,通过使用即可知道具有哪些功能,因此功能性需求是很容易模仿的,而难以模仿的主要是软件设计方法、数据结构与算法。事实上,算法与数据结构以及库与模块化软件设计是软件技术的核心,而代码重用则是程序设计的重点之一;
硬件设计的重点是模拟和传感器,否则很难上升到系统设计的层面;软件设计的重点是把握行业需求;...
分类:
其他好文 时间:
2015-01-09 15:33:22
阅读次数:
212
做Sicily 1215脱离地牢 这一题,一直Restrict function,都快崩溃了。
最后发现是内存泄露,就是new出来的东西没有及时delete导致的。
具体是在广度优先搜索的时候,每找一次邻居就new出一些节点,有些节点已被visited了然后我直接忽略它们,实际上是得把它们delete掉的,还有就是pop出一个节点后,在处理完邻居之后要把这个节点delete了
...
分类:
其他好文 时间:
2014-12-27 11:26:14
阅读次数:
255
解释:根据规则构造数字,而不是从头遍历一遍判断,这样可以避免很多不必要的计算。
运行效率:0秒,312KB。
代码如下,类似广度优先搜索:
#include
#include
#include
#include
using namespace std;
//int toInt(char c){ return c-'0'; }
//char toChar(int i){ return i...
分类:
其他好文 时间:
2014-12-26 00:59:09
阅读次数:
195
基于我的另一篇文章《算法与数据结构基础4:C++二叉树实现及遍历方法大全》 ,二叉树的结构用的这篇文章里的。
二查找叉树的删除可以细分为三种情况:
1 被删除的是叶子节点,直接删除;
2 被删除只有一个子节点,指针下移;
3 有两个子节点,为了不破坏树的结构,需要找出一个节点来替换当前节点。
根据二叉树的特点,当前节点大于所有左子树,小于所有右子树,
可以用左子树中最大...
分类:
编程语言 时间:
2014-12-11 10:23:59
阅读次数:
243
一 定义
拓扑排序是对有向无环图(Directed Acyclic Graph简称DAG)顶点的一种排序,
它使得如果存在一条从顶点A到顶点B的路径,那么在排序中B出现在A的后面。
二 先决条件
能够进行拓扑排序图有两个先决条件:有向、无环,即有向无环图。
三 偏序全序
连通图:任意两点之间都存在至少一条边
偏序:非连通图(有向无环图满足偏序关系)
全序:单连通图
...
分类:
编程语言 时间:
2014-12-08 21:21:59
阅读次数:
279
邻接矩阵的存储比邻接表实现起来更加方便,也更加容易理解。
邻接矩阵就是用一个二维数组matrix来存储每两个点的关系。如果两个点m,n之间有边,将数组matrix[]m[m]设为1,否则设为0。
如果有权,则将matrix[m]n[]设为权值,定义一个很大或者很小的数(只要不跟权值冲突即可),表示不相连。
空间复杂度为O(V^2),适合比较稠密的图。
邻接表O(V+E),适合比较稀疏的图。...
分类:
编程语言 时间:
2014-12-06 15:25:28
阅读次数:
255
前面实现了链表和树,现在看看图。
链表是一对一的对应关系;
树是一对多的对应关系;
图是多对多的对应关系。
图一般有两种存储方式,邻接表和邻接矩阵。
先看邻接表。
邻接表就是将图中所有的点用一个数组存储起来,并将此作为一个链表的头,
链表中保存跟这个点相邻的点(边点),如果有权值,则在边点中增加一权值字段。
因此,有向图邻接表的空间复杂度为O(v+e),无向图加倍。...
分类:
编程语言 时间:
2014-12-06 12:52:27
阅读次数:
235