算法
文章平均质量分 74
aa2010aa
这个作者很懒,什么都没留下…
展开
-
回溯算法练习
4. 证明在两船装载问题中,只要存在一种方法能装载所有货箱,则通过尽可能装满第一艘船就可找到一种可行的装载方法。 5. 运行程序1 6 - 3和1 6 - 4的代码,测试它们的相对运行时间。 6. 运用1 6 . 2 . 1节中第4小节的方法1) 来更新程序1 6 - 3,使其能得到时间复杂性O ( 2n )。 7. 运用1 6 . 2 . 1节中第4小节的方法2) 来修改程序1 6原创 2009-11-25 22:20:00 · 941 阅读 · 0 评论 -
字符串匹配算法-有限状态机
下面是字符串匹配算法-有限状态机的简单实现。 //产生字符串P的有限机,void X(const string P, int (*prefix)[26]){ int m = P.length(); for(int q = -1; q < m; q++) { for(int j = 0; j < 26; j++) { int k = m <原创 2009-12-13 21:44:00 · 3598 阅读 · 1 评论 -
字符串匹配算法-kmp
int Compare(string P, int *prefix){ int m = P.length(); prefix[0] = -1; int k = -1; for(int i = 1; i < m; i++) { while(k >= 0 && P[k + 1] != P[i]) k = prefix[k]; if(P[k + 1] == P原创 2009-12-13 21:30:00 · 606 阅读 · 0 评论 -
selfnumbers查找的实现与分析
今天有一个高中的同学在网上问了我一到ACM的题,是关于找selfnumbers数的,要求运行时间至少要是O(nlog(n)),空间要比O(n)要小。立马我就上wikipedia网查一下,关于selfnumbers的定义和有关数学的解法(没办法啊,咱数学功底还没那么厚,只能站在巨人的肩膀上,^_^)。O(∩_∩)O哈哈~,wikipedia还真伟大啊,还真有。我摘抄了一部分:(http://原创 2009-12-02 18:17:00 · 1121 阅读 · 0 评论 -
随机数产生原理及应用(续)
3连续型随机变量的生成: 3.1反函数法 采用概率积分变换原理,对于随机变量X的分布函数F(X)可以求其反函数,得:Xi=G(Ri)其中,Ri为一个0-1区间内的均匀分布的随机变量.F(X)较简单时,求解较易,当F(X)较复杂时,需要用到较为复杂的变换技巧。 3.1.1平均分布:例:已知炮弹对目标的方位角Fi在0-2*P内均匀分布,试用(0,转载 2009-11-30 13:02:00 · 3926 阅读 · 1 评论 -
随机数产生原理及应用
摘要: 本文简述了随机数的产生原理,并用C语言实现了迭代取中法,乘同余法等随机数产生方法,同时,还给出了在符合某种概率分布的随机变量的产生方法。 关键词: 伪随机数产生,概率分布 1前言: 在用计算机编制程序时,经常需要用到随机数,尤其在仿真等领域,更对随机数的产生提出了较高的要求,仅仅使用C语言类库中的随机函数已难以胜任相应的工作。本文转载 2009-11-30 12:52:00 · 1139 阅读 · 0 评论 -
常用算法设计方法
要使计算机能完成人们预定的工作,首先必须为如何完成预定的工作设计一个算法,然后再根据算法编写程序。计算机程序要对问题的每个对象和处理规则给出正确详尽的描述,其中程序的数据结构和变量用来描述问题的对象,程序结构、函数和语句用来描述问题的算法。算法数据结构是程序的两个重要方面。 算法是问题求解过程的精确描述,一个算法由有限条可完全机械地执行的、有确定结果的指令组成。指令正确地描述了要完成的任原创 2009-11-28 13:49:00 · 331 阅读 · 0 评论 -
hash实现--开放寻址方式
今天看了一下《算法导论》第十一章的散列表,里面有一节是关于开发寻址方式。 下面是我的简单的实现: static const int __stl_num_primes = 28;static const unsigned long __stl_prime_list[__stl_num_primes] ={ 53, 97, 193,原创 2009-11-30 19:49:00 · 2461 阅读 · 0 评论 -
12个乒乓球的问题
有12个兵乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。答案: 分为三组:(1)(2)(3)(4),(5)(6)(7)(8),(9)(10)(11)(12) 第一次称两组:左⑴⑵⑶⑷,右⑸⑹⑺⑻ 如果平,则在⑼⑽⑾⑿中,第二次,⑴⑵:⑼⑽,确定在⑼⑽中还是在⑾⑿中,从而符合第二假设,第三次即可确定.原创 2009-11-30 19:09:00 · 862 阅读 · 0 评论 -
随机数产生原理及应用(再续二)
在网上找到了一个产生随机数的函数,没有种子。直接就可以用,但有个坏处,就是每次运行结果都一样。 程序如下: unsigned int Random32(void) { static const unsigned long x[55] = { 1410651636UL, 3012776752UL, 3497475623UL, 289214502原创 2009-11-30 19:14:00 · 411 阅读 · 0 评论 -
随机数产生原理及应用(再续)
线性同余方法(LCG)是个产生伪随机数的方法。它是根据递归公式: 其中A,B,M是产生器设定的常数。LCG的周期最大为M,但大部分情况都会少于M。要令LCG达到最大周期,应符合以下条件:1 B,M互质;2 M的所有质因子的积能整除A − 1;3 若M是4的倍数,A − 1也是;4 A,B,N0都比M小; 5 A,B是正整数。 下原创 2009-11-30 17:56:00 · 748 阅读 · 0 评论 -
矩阵,简单的运行技巧
对于矩阵乘法 C = A× B,通常的做法是将矩阵进行分块相乘,如下图所示: 从上图可以看出这种分块相乘总共用了8次乘法,当然对于子矩阵相乘(如A0×B0),还可以继续递归使用分块相乘。对于中小矩阵来说,很适合使用这种分块乘法,但是对于大矩阵来说,递归的次数较多,如果能减少每次分块乘法的次数,那么性能将可以得到很好的提高。Strassen矩阵乘法就是采用了一个简单的运转载 2009-12-13 09:48:00 · 1706 阅读 · 0 评论