
算法
文章平均质量分 73
杜甲同学
QQ:2685312867
展开
-
A*算法
在前面的博客当中,其实我们已经讨论过寻路的算法。不过,当时的示例图中,可选的路径是唯一的。我们挑选一个算法,就是说要把这个唯一的路径选出来,怎么选呢?当时我们就是采用穷尽递归的算法。然而,今天的情形有点不太一样了。在什么地方呢?那就是今天的路径有n条,这条路径都可以达到目的地,然而我们在挑选的过程中有一个要求,那就是挑选的路径距离最短?有没有什么办法呢? 那么,这时候就要A*算法就可以排上用场了。转载 2013-08-22 14:00:45 · 996 阅读 · 0 评论 -
数据结构学习笔记(一)不断更新
这里将学过的数据结构做一个整理,不断原创 2014-08-17 22:00:45 · 934 阅读 · 0 评论 -
数据结构栈 学习笔记
栈是先进后出的数据结构。下面直接上代码了。原创 2014-09-19 09:42:13 · 1498 阅读 · 0 评论 -
C++算法库 (3)划分操作
/*is_partitioned 检测某个范围是否按指定谓词划分过*/#include #include #include using namespace std;bool IsOdd(int i) {return (i % 2) == 1;}int main(int argc, const char * argv[]){ array foo = {1,2,3原创 2014-02-11 11:30:34 · 1152 阅读 · 0 评论 -
C++算法库(4)排序操作
/*is_sorted 检测指定范围是否已排序*//*is_sorted 检测指定范围是否已排序*/#include #include #include using namespace std;int main(int argc, const char * argv[]){ array foo = {2,4,1,3}; do {原创 2014-02-11 18:07:35 · 1019 阅读 · 0 评论 -
C++算法库(2)
/*copy 将一个范围中的元素拷贝到新的位置处*/#include #include #include using namespace std;int main(int argc, const char * argv[]){ int myints[] = {10,20,30,40,50,60,70}; vector myvector(原创 2014-02-09 20:50:45 · 1065 阅读 · 0 评论 -
C++算法库 不修改内容的序列操作函数
/* adjacent_find 查找两个相邻的等价元素*/#include #include #include using namespace std;/* adjacent_find 查找两个相邻的等价元素*/bool myfunction(int i , int j){ return (i == j);}void adjacentFineFunction(原创 2014-02-09 16:29:39 · 1254 阅读 · 0 评论 -
C++冒泡排序模板
templatevoid print(T *array,const int size){ if(NULL==array) throw; if(0>=size) return; int i=0; for(;i<size;++i) cout<<array[i]<<" "; cout<<endl;}templatevoid bubble_sort(T转载 2013-11-28 16:49:58 · 1369 阅读 · 0 评论 -
树和二叉树
树是n个结点的有限集合如果n=0 成为空树有且只有一个特殊的结点成为树的根结点 结点就是一个数据元素及其若干指向其子树的分支。 二叉树的定义是递归的 typedef struct Node{ ElemType data; struct Node* Lchild,*Rchild; //跟双向链表不同,这两个指针分别是指向左边的树和右边的树。原创 2013-09-05 13:01:16 · 974 阅读 · 0 评论 -
数据结构--查找
查找(Searching),也称检索,查表,就是在大量的信息集中寻找一个特定的信息元素。查找就是根据给定的关键字值,在查找表中确定一个关键字等于给定的记录或数据元素。若存在这样的数据元素,则称查找成功的,否则查找不成功。查找是许多重要的计算机程序中最耗费时间的部分,查找算法的优劣密切关系着查找操作的速度。顺序查找是最简单的查找技术 但是特别慢。原创 2013-09-05 13:02:30 · 1123 阅读 · 0 评论 -
数据结构--队列
队列是只允许在表的一端进行插入(队尾),在另一端进行删除(对头)的运算受限的线性表。允许删除的一端称为对头(front),允许插入的一端称为队尾(rear)。队列称为先进先出(First in first out)的线性表。基本运算InitQueue(Q)构造一个空队列QvQueueEmpty(Q)判断队空,若队列Q空,则返回true,否则返原创 2013-09-05 13:03:37 · 1274 阅读 · 0 评论 -
数据结构--栈
栈是一种被限制在只能在表的一端进行插入和删除运算的线性表。 (局部变量是用栈来保存的)可以进行插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),当表中没有元素时(表长为0的栈)称为空栈。栈的修改是按后进先出的原则进行,因此栈被称为后进先出(Last in first out)线性表。 堆和栈是占一块内存的,栈向下存,堆向上原创 2013-09-05 13:03:37 · 1391 阅读 · 0 评论 -
数据结构--单链表
单链表的特点:1.用一组任意的存储单元存储线性表中的数据元素,这组存储单元可以是连续的,也可以是不连续的。2.链表中结点的逻辑次序和物理次序不一定相同,为了能正确反映结点间的逻辑关系,在存储每个结点值的同时,还必须存储其后继结点的地址信息。(因为物理顺序不同,所以在每个存储的数据后面留出一小块空间存储下一个逻辑结点的地址)3.存放数据元素的结点至少包括两个域,一个域放该元素的数据,称为原创 2013-09-05 13:05:22 · 1178 阅读 · 0 评论 -
数据结构--顺序表
线性表由n(n>=0)个数据元素(结点)组成的有限(线段)序列。记为: (a0,a1,......,an-1)其中,数据元素个数n称为表的长度,n=0时,称此线性表为空表。n=0时:为空表n不=0时:n为表长线性表的结构仅涉及诸元素的线性相对位置。例如: 第i个元素ai处在第i-1个元素ai-1的后面原创 2013-09-05 12:59:00 · 1218 阅读 · 0 评论 -
博弈方法积累
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。原创 2013-08-17 09:55:39 · 871 阅读 · 0 评论 -
一个指针实现双向链表
用一个指针实现双向链表这个东西除了在面试中能够用到,其他地方哪里会用到,这个我也不知道。希望知道的人能够在评论中说下。下面直接给出代码typedef struct _Q1LinkNode{ int data; unsigned long link;}Q1LinkNode;// 创建一个节点Q1LinkNode *createQ1LinkNode(int原创 2017-03-27 10:18:19 · 2116 阅读 · 1 评论