自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 关于读书

在求知的过程中,我们经常会要面对这样,那样的诱惑。以读书为例,一部经典的好教材,想要把它读通,搞明白,弄扎实,除了在读的过程中理解作者想要描述的字面意思以外,往往还需要通过作大量的相关习题及实验来建立起更为扎实,深刻的认识,而捧着厚厚的一本书,人类心理潜在的*占有本能*又往往会驱使着自己以最快的速度将这部教材拿下,*满足自己的成就感*,于是在没有外人监督,没有外力监控的情况下,很容易演变为一开

2009-12-20 15:50:00 481

原创 字符串匹配算法-有限状态机

    下面是字符串匹配算法-有限状态机的简单实现。     //产生字符串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 3607 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 609

转载 矩阵,简单的运行技巧

对于矩阵乘法 C =  A× B,通常的做法是将矩阵进行分块相乘,如下图所示:   从上图可以看出这种分块相乘总共用了8次乘法,当然对于子矩阵相乘(如A0×B0),还可以继续递归使用分块相乘。对于中小矩阵来说,很适合使用这种分块乘法,但是对于大矩阵来说,递归的次数较多,如果能减少每次分块乘法的次数,那么性能将可以得到很好的提高。Strassen矩阵乘法就是采用了一个简单的运

2009-12-13 09:48:00 1714

转载 编程中的命名设计

在我开始设计系统的时候,我会花去很多时间去设计命名,因为好的命名和好的设计是分不开的。In the beginning was the Word, and the Word was with God, and the Word was God太初有道。道与神同在,道就是神。 (约翰福音第一章,第一节)在设计过程中给类,方法和函数好的命名会带来好的设计,虽然这不是一定成立,但是如果坏

2009-12-11 09:37:00 458

原创 c++ float类型研究

 在C++中float数据类型是采用科学计数法来表示的,就像下面这样:  其中S位符号位,占一位的二进制数,1为正,0为负,T为底数,按二进制数存储,占23位,E为指数部分,占8位。结构如下: float 在内存中是按逆字节的存储的:其中尾数是这样的形式:1.T1T2T3...T23。转换为十进制的数:  因为指数可以是负数,c++指数部分按原来

2009-12-10 22:24:00 8852 1

转载 C语言的谜题

     本文转摘自http://coolshell.cn/?p=945;      我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。而《谁说C语言很简单》则通过一些看似你从来不可能写出的代码来告诉大家C语言并不是一件容易事情。《6个变态的hello world》和《如何弄乱C的源代码》则以一种极端的方式告诉大家,不要以为

2009-12-07 21:55:00 517

原创 c++的转换

C++区分了5种匹配:1.匹配中不转换或者只使用不可避免的转换(例如,从数组名到指针,函数名到函数指针,以及T到const T)2.使用了整数的提升的匹配:(从char 到 int, short 到int , 以及 它们对应的unsigned 类型)以及float 到double,还有一个就是 bool到int。3.使用了标准转换的匹配(例如 int到double, derived

2009-12-03 19:22:00 464

原创 selfnumbers查找的实现与分析

今天有一个高中的同学在网上问了我一到ACM的题,是关于找selfnumbers数的,要求运行时间至少要是O(nlog(n)),空间要比O(n)要小。立马我就上wikipedia网查一下,关于selfnumbers的定义和有关数学的解法(没办法啊,咱数学功底还没那么厚,只能站在巨人的肩膀上,^_^)。O(∩_∩)O哈哈~,wikipedia还真伟大啊,还真有。我摘抄了一部分:(http://

2009-12-02 18:17:00 1126

原创 itoa的具体实现、测试和优化

 今天看到有人在百度知道提问:要写一个itoa的函数(仿c语言的)。看了一下,以前做过,也就随手写了。我把代码发出来,献丑了。inline void myitoa(int value, char *str, int radio = 10){ char *p = str; char *ptemp; unsigned int temp = value; char tempc;

2009-12-01 18:26:00 824

原创 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 2465

原创 随机数产生原理及应用(再续二)

  在网上找到了一个产生随机数的函数,没有种子。直接就可以用,但有个坏处,就是每次运行结果都一样。  程序如下:  unsigned int Random32(void) {             static const unsigned long x[55] = {         1410651636UL, 3012776752UL, 3497475623UL, 289214502

2009-11-30 19:14:00 414

原创 12个乒乓球的问题

有12个兵乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。答案: 分为三组:(1)(2)(3)(4),(5)(6)(7)(8),(9)(10)(11)(12) 第一次称两组:左⑴⑵⑶⑷,右⑸⑹⑺⑻        如果平,则在⑼⑽⑾⑿中,第二次,⑴⑵:⑼⑽,确定在⑼⑽中还是在⑾⑿中,从而符合第二假设,第三次即可确定.       

2009-11-30 19:09:00 871

原创 随机数产生原理及应用(再续)

线性同余方法(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 751

转载 随机数产生原理及应用(续)

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 3968 1

转载 随机数产生原理及应用

摘要:       本文简述了随机数的产生原理,并用C语言实现了迭代取中法,乘同余法等随机数产生方法,同时,还给出了在符合某种概率分布的随机变量的产生方法。 关键词: 伪随机数产生,概率分布      1前言:      在用计算机编制程序时,经常需要用到随机数,尤其在仿真等领域,更对随机数的产生提出了较高的要求,仅仅使用C语言类库中的随机函数已难以胜任相应的工作。本文

2009-11-30 12:52:00 1158

原创 当心潜在的二义性

   在《Effective C++》中有一篇《当心潜在的二义性》。    这是潜在二义性的一个例子:  class B;                    // 对类B提前声明                            // class A {public:  A(const B&);              // 可以从B构造而来的类A};class B {p

2009-11-29 15:45:00 457

原创 常用算法设计方法

要使计算机能完成人们预定的工作,首先必须为如何完成预定的工作设计一个算法,然后再根据算法编写程序。计算机程序要对问题的每个对象和处理规则给出正确详尽的描述,其中程序的数据结构和变量用来描述问题的对象,程序结构、函数和语句用来描述问题的算法。算法数据结构是程序的两个重要方面。      算法是问题求解过程的精确描述,一个算法由有限条可完全机械地执行的、有确定结果的指令组成。指令正确地描述了要完成的任

2009-11-28 13:49:00 334

原创 回溯算法练习

 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 948

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除