08 2015 档案

数据结构堆的实现
摘要:堆的实现// heap.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includeusing namespace std;#define LARGENUM 1000000class Heap{private: vector ar... 阅读全文

posted @ 2015-08-27 20:21 moffis 阅读(172) 评论(0) 推荐(0)

散列表(哈希表)的实现
摘要:散列函数直接用key%size的形式,size为散列表的大小。冲突处理采用平方探测法,为保证可以探测到整个散列表空间,散列表大小设置为4k+3形式的素数。当散列表中的元素过多时会造成性能下降,这时应该倍增散列表的大小,重新计算原来散列表中每个元素在新的散列表中的位置。散列表的实现// HashTab... 阅读全文

posted @ 2015-08-26 19:01 moffis 阅读(220) 评论(0) 推荐(0)

排列与组合的实现
摘要:排列与组合,递归实现// Permutation and Combination.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includeusing namespace std;vector>aaa;set>solu;void... 阅读全文

posted @ 2015-08-25 10:58 moffis 阅读(167) 评论(0) 推荐(0)

c++运算符重载
摘要:C++不允许把下标运算符函数作为外部函数来定义,它只能是非静态的成员函数。注意操作符重载作为友元函数和成员函数的区别// person.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using namespac... 阅读全文

posted @ 2015-08-24 16:48 moffis 阅读(189) 评论(0) 推荐(0)

二叉树的非递归遍历
摘要:二叉树的非递归遍历,这个实现的是先根遍历// Traverse-Tree.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;struct BiNOde{ int ele; Bi... 阅读全文

posted @ 2015-08-22 22:41 moffis 阅读(141) 评论(0) 推荐(0)

tsp问题——遗传算法解决
摘要:TSP问题最简单的求解方法是枚举法。它的解是多维的、多局部极值的、趋于无穷大的复杂解的空间,搜索空间是n个点的所有排列的集合,大小为(n-1)!。可以形象地把解空间看成是一个无穷大的丘陵地带,各山峰或山谷的高度即是问题的极值。求解TSP,则是在此不能穷尽的丘陵地带中攀登以达到山顶或谷底的过程。这一篇... 阅读全文

posted @ 2015-08-19 19:57 moffis 阅读(1797) 评论(0) 推荐(0)

八数码问题——双向广度优先搜索解决
摘要:八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。 搜... 阅读全文

posted @ 2015-08-18 03:14 moffis 阅读(448) 评论(0) 推荐(0)

求最长公共子序列
摘要:最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的。#include "st... 阅读全文

posted @ 2015-08-17 19:02 moffis 阅读(210) 评论(0) 推荐(0)

AC自动机
摘要:要学会AC自动机,我们必须知道什么是Trie,也就是字典树。最好对KMP算法也有些了解。Trie树和KMP算法我之前博客都有写过,感兴趣的可以看看。简单叙述下问题,现在给出"hsay";"ah";"sahe";"he";"say";"herhb";"aher";"erhs"共8个关键词,要问字符串"... 阅读全文

posted @ 2015-08-10 00:58 moffis 阅读(165) 评论(0) 推荐(0)

A*搜索算法
摘要:A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。这种算法的所获得的路径并不一定是最短路径但一定是我们所关注的某一方面价值最“优”的路径。我们将地图划分为一个个节点,从出发点到目标的路径就可以使用... 阅读全文

posted @ 2015-08-08 23:04 moffis 阅读(229) 评论(0) 推荐(0)

判断有向图是否有环及拓扑排序
摘要:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序... 阅读全文

posted @ 2015-08-07 22:22 moffis 阅读(1841) 评论(0) 推荐(0)

线索二叉树的生成
摘要:n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域。利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为"线索")。这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据线索性质的... 阅读全文

posted @ 2015-08-03 14:28 moffis 阅读(456) 评论(0) 推荐(0)

最小生成树
摘要:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树在n个顶点的情形下,有n-1条边。生成树是对连通图而言的,是连同图的极小连通子图,包含图中的所有顶点,有且仅有n-1条边。非连通图的生成树则组成一个生成森林;若图中有n个顶点... 阅读全文

posted @ 2015-08-02 20:14 moffis 阅读(174) 评论(0) 推荐(0)

最短路径问题
摘要:最短路径在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短值。#include "stdafx.h"#include#includeusing namespace std;#define N 9#define MIN 1000000typede... 阅读全文

posted @ 2015-08-01 23:55 moffis 阅读(174) 评论(0) 推荐(0)

导航