数据结构/算法
文章平均质量分 68
DaNmarner
这个作者很懒,什么都没留下…
展开
-
基础排序算法演示
满脑子都是阶段/状态/决策……学无止境呀发一点基本的排序算法,分成很多个文件写的,每个文件前面带了注释,一起发出来,结构如下: 基础排序算法文件结构 Sort.h 头文件原创 2006-04-25 23:42:00 · 1906 阅读 · 0 评论 -
随机化快速排序代码
当年抓破头皮没想出来,溜了一眼算法导论豁然开朗。其实就是排以前交换一下pivot。 #include stdlib.h> #include time.h>#include stdio.h>typedef int Record; void QuickSort (Record r[],int s,int t);void QuickSort (Record r[],int s,int t)原创 2006-11-16 09:28:00 · 1275 阅读 · 0 评论 -
背包问题
*部分背包问题可有贪心法求解:计算Pi/Wi 数据结构: w[i]:第i个背包的重量; p[i]:第i个背包的价值; 1.0-1背包: 每个背包只能使用一次或有限次(可转化为一次): A.求最多可放入的重量。NOIP2001 装箱问题 有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积 (正整数)。要求从 n 个物品中,任取转载 2006-11-12 20:47:00 · 1281 阅读 · 0 评论 -
背包问题经典实现方法
背包问题里“背包”的英文是 knopsack ,其基本问题就假设有一个限定重量的背包,若干一定重量的物品,每个物品都有各自的价值, 现在要尽可能的向背包里装入若干物品,使得背包中物品价值之和最大。这个问题在密码学上有重要的应用,有很多先进的算法,可惜我不懂……不过没关系,因为至少我们还有DP,可以使用空间复杂度O(n)时间复杂度O(n^2)的算法圆满实现该算法。约定:背包的重量为c,物原创 2006-11-13 20:11:00 · 2478 阅读 · 0 评论 -
写了一个Floyd-Warshall算法演示
Floyd-Warshall可以比较高效地解决图论中多源最短路径的问题。它的本质是一次标号法动态规划——正因为如此,这个算法的实现有了非常难能可贵的一点,那就是它的简洁。所以很多人在求最单源短路的时候都会用它,而不是效率更高但实现略烦的Dijkstra或者Bellman-Ford(当然是在时间比较宽裕的时候啦!)。总之,Floyd-Warshall算法好!来,跟我一起念——Flo-yd-算-原创 2006-11-15 23:10:00 · 2174 阅读 · 0 评论 -
最小点基的模块代码
点基B满足: 对于任意一个顶点Vj,一定存在B中的一个Vi,使得Vi是Vj的前代。点基包含:顶点数最小的点基 权最小的点基(当所有的权为1时,权最小的点基变成了顶点数的 最小的点基)最高强连通分支: 定义:如果在G中,不存在终点属于[Si]而起点不属于[Si]的弧,就称[Si]为最高强连通分 支。 性质:强连通分支Si与图G其他部分相连的所有弧都是向外伸展的转载 2006-10-26 13:13:00 · 1676 阅读 · 0 评论 -
寻找必败态——一类博弈问题的快速解法
博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中有一类试题更是完全无法用常见的博弈树来进行解答。寻找必败态即为针对此类试题给出一种解题思路。 此类问题一般有如下特点: 1、博弈模型为两人轮流决策的非合作博弈。即两人轮流进行决策,并转载 2006-10-20 22:33:00 · 1190 阅读 · 0 评论 -
并查集及应用
/*********************************************************************************数据结构——并查集及应用并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多。一般采取树形结构来存储并查集,并利用一个rank数组来存储集合的深度下界,在查找操作时进行路径压缩使后续的查找操作加速。这样优化实现转载 2006-10-20 22:31:00 · 1095 阅读 · 0 评论 -
产生一定范围内随机数的方法
改进快速排序的时候用到了随机化的办法,而快排的算法要求提供一个给定区间内的随机整数。比如需要产生[i,j]这个区间内的随机整数。我认为最好的方法就是先对rand()取余产生[0,j-i+1]的随机数数然后加上偏移量i,这一样的方法比用判断好得多。示例://产生区间[i,j]内的随机整数 srand(time(NULL)); //产生随机种子 target=rand()%(j-i+1)+i;原创 2006-09-28 23:32:00 · 1667 阅读 · 0 评论 -
由toj“勇闯黄金十二宫-金牛宫”想到的
金牛宫是简单的可以的一道入门题,只要尝试从给出的整数里抠出4个素数,成功的话就输出Niu!,否则输出Ruo..就可以帮助圣斗士过关了.问题出在数据规模上,题目给出的最大数字是2的31次方。在这个范围内抠素数必须要预处理建立一个素数表。常用的求素数表的方法有两种:1 对于一个整数n,用 2..它的平方根 除之,如果无法整除即证明它是个素数。用这个办法判断给定范围内的每一个整数是否为素原创 2006-05-01 20:41:00 · 1524 阅读 · 0 评论 -
离散的含义
以下是DaNmarner傻傻的提问:--------------------------------------------------------离散数学的“离散”是什么意思?离散数学根数据结构有什么关系?可不可以举个例子? 图论包括在离散数学里吗?--------------------------------------------------------以下是dee原创 2006-05-01 20:07:00 · 3641 阅读 · 1 评论 -
OI教材选择
教材书籍选择 语言: 《The C Programming Language 》影印目前绝版,进口210元左右 《C程序设计(第二版) 》谭浩强 虽然有点老套,有些地方很LJ的写法都有,但是还是不错的20元左右 http://www.china-pub.com/computers/common/info.asp?id=168转载 2006-04-27 09:15:00 · 1937 阅读 · 0 评论 -
简析基础排序算法
排序就是按照数据中某一种数据按一定的规则从把数据无序变为有序。排序好比排队,设想有一群七七八八的人站成了一排,你看他们乱糟糟的很不爽,于是决定按照你的规则把他们拍好。对于任意两个人你可以直接按你的规则决定他们的先后。这里假设你的规则是从“小”到“大”。 插入排序 假设已经原创 2006-04-27 00:25:00 · 1443 阅读 · 0 评论 -
二叉搜索树的基本操作(C代码实现)
对于一棵有n个节点的完全二叉搜索树的 基本操作可以实现在O(lgn)的时间内,通常一棵随机建立的二叉搜索树的期望也可以达到O(lgn)。对二叉搜索树来说更有意义的数据是它的高度h,因为以下的操作时间复杂度可以描述为O(h)这里实现的基本操作有:Search(查找节点), Minimum(最小值), Maximum(最大值), Predecessor(前驱), Successor(后继), In原创 2006-07-26 00:09:00 · 2407 阅读 · 5 评论