数据结构与算法
文章平均质量分 77
zhangchao3322218
这个作者很懒,什么都没留下…
展开
-
改进的走迷宫,可算出所有可行的路径
/*老鼠走迷官(二) 说明:由于迷宫的设计,老鼠走迷宫的入口至出口路径可能不只一条,如何求出所有的路径呢? 解法:求所有路径看起来复杂但其实更简单,只要在老鼠走至出口时显示经过的路径, 然后退回上一格重新选择下一个位置继续递回就可以了,比求出单一路径还简单, 我们的程式只原创 2011-09-30 11:10:21 · 1340 阅读 · 0 评论 -
回溯法算法步骤&n皇后问题的详细程序(C++)
/* 回溯法有“通用解题法”之称,可以系统的搜索问题的所有解,既有系统性也有跳跃性。 它在问题的解空间树中,按深度优先策略,从根节点出发搜索解空间树。算法搜索至洁空间树 的任一结点时,先判断该结点是否包括该问题的解,如果肯定不包含,则跳过对以该结点为 根的子树的搜索,逐层向其祖先结点回溯;否则进入该子树,继续按深度优先策略搜索。 回溯法解题的三个步骤: (1)针对所给问原创 2012-10-19 18:47:57 · 11706 阅读 · 0 评论 -
n皇后问题的非递归迭代算法(C++实现)
//n皇后问题的非递归迭代算法 #include #include using namespace std; class NQueen { private: int numOfQueen; //the number of queens int numOfanswer; //the number of answers int *queen;原创 2012-10-22 10:00:57 · 2458 阅读 · 0 评论 -
栈的C++类模板实现
师兄写的,很好!http://my.oschina.net/zmjerry/blog/3652 向师兄学习中,可惜进入实验室前师兄就走了,不然能让师兄指导一些 头文件: /***************************************************************************** *转载 2012-10-23 22:39:48 · 460 阅读 · 0 评论 -
队列的C++模板实现
师兄写的,很好,目前水平尚浅,看不出有什么地方我能改进的 转自:http://my.oschina.net/zmjerry/blog/3656 头文件: /***************************************************************************** *转载 2012-10-23 22:42:10 · 487 阅读 · 0 评论 -
双向链表的C++类模板实现
师兄的,转自:http://my.oschina.net/zmjerry/blog/3653 头文件: /***************************************************************************** * doublelist.h * * Doub转载 2012-10-25 08:08:07 · 2956 阅读 · 0 评论 -
图的深度优先(非递归)、广度优先、最小生成树的C++实现
头文件: /***************************************************************************** * algraph.h * * Adjacency List Based Undirected Graph. * * This is a C转载 2012-11-15 21:12:59 · 1493 阅读 · 0 评论 -
二次探查再散列Hash表的C++实现
/***************************************************************************** * student.h ***********************************************************************原创 2012-11-21 22:17:55 · 2503 阅读 · 0 评论 -
海量数据处理面试题
第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几原创 2013-01-10 22:34:21 · 497 阅读 · 0 评论 -
二叉搜索树的非递归C++实现
师兄的,学习了:http://my.oschina.net/zmjerry/blog/6041 头文件: /***************************************************************************** * student.h * * A st转载 2012-10-29 22:15:37 · 597 阅读 · 0 评论 -
栈的基本结构和基本操作(c语言描述)
#include /* EOF(=^Z或F6),NULL */ #include /* atoi() */ #include #include /* malloc()等 */ #include /* eof() */ #include /* exit() */ /* 函数结果状态代码 */ #define TRUE 1 #define FALSE 0 #define原创 2011-11-10 16:30:35 · 969 阅读 · 0 评论 -
八皇后问题解法二
//在八个皇后的问题中,不必要所有的格子都检查过,例如若某列检查过, //该列的其它格子就不用再检查了,这个方法称为分支修剪。 #include #include #define N 5 int column[N+1]; // 同行是否有皇后,1表示有 int rup[2*N+1]; // 右上至左下是否有皇后 int lup[2*N+1]; // 左上至右原创 2011-11-09 18:41:00 · 443 阅读 · 0 评论 -
递归算法求老鼠走迷宫(C语言)
/*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁, 使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。 解法老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进, 无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四原创 2011-09-29 17:32:36 · 9758 阅读 · 0 评论 -
二叉树统计单词的个数,若单词第一次出现,则产生新的树节点
//二叉树统计单词的个数,若单词第一次出现,则产生新的树节点 #include #include #include #include #define MAXWORD 100 struct tnode //树的节点 {原创 2011-09-27 10:57:37 · 950 阅读 · 0 评论 -
递归函数工作原理
递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。 递归通常用来解决结构自相似的问题。所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的转载 2011-09-29 19:39:02 · 18091 阅读 · 2 评论 -
三色旗算法及其C程序
/* 说明: 假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序, 您希望将之分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳 子上进行这个动作,而且一次只能调换两个旗子。 解法: 在一条绳子上移动,在程式中也就意味只原创 2011-09-29 17:07:00 · 4298 阅读 · 0 评论 -
打印杨辉三角的C程序
//打印杨辉三角 #include #define N 12 long combi(int n, int r) { int i; long p = 1; for(i = 1; i p = p * (n-i+1) / i;原创 2011-09-28 18:08:11 · 1067 阅读 · 0 评论 -
汉诺塔算法
/*汉诺塔算法 解法如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将B当作辅助柱。 如果盘数超过2个,将第三个以下的盘子遮起来,就很简单了,每次处理两个盘子, 也就是:A->B、A ->C、B->C这三个步骤,而被遮住的部份,其实就是原创 2011-09-28 17:39:24 · 1054 阅读 · 0 评论 -
C++泛型编程中算法库<algorithm>和向量<vector>的简单实例
#include #include #include using namespace std; void main(void) { const int size = 10 ; vector v(size); //说明容器v,其大小为size vector::iterator start, end, it, pos ; //说明4个泛型指针,即迭代原创 2011-11-19 22:32:38 · 719 阅读 · 0 评论 -
八皇后问题的解法一
#include #include using namespace std; const int MAX_SIZE = 100; enum flag {blank ='X',queen = 1}; char Chess[MAX_SIZE][MAX_SIZE];//棋盘图 int n;//解决n皇后问题 int total;//用于计摆放方式 //对棋牌进原创 2011-11-09 18:40:06 · 690 阅读 · 0 评论 -
海量数据处理方法总结
何谓海量数据处理? 所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树,针对空间,无非就一个办法:大而化小:分而治之/ha转载 2013-01-11 16:23:27 · 596 阅读 · 0 评论