- 博客(21)
- 资源 (27)
- 收藏
- 关注
转载 KMP算法
转载地址:http://www.cppblog.com/oosky/archive/2006/07/06/9486.htmlKMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一. 简单匹配算法先来看一个简单匹配算法的函数: bool SubStringM
2012-08-30 16:54:38 540
原创 通过汉诺塔问题来理解递归
汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。汉诺塔问题 这个问题在盘子比较多的情况下,很难直接
2012-08-29 19:43:00 1664
原创 应用 设计模式的理念 来设计一款计算器
程序代码如下:#include using namespace std;//运算类class Coperation{public: Coperation() { cout<<"Coperation constriction"<<endl; } virtual ~Coperation() { cout<<"Coperation dest
2012-08-27 20:51:17 508
原创 关于基类的析构函数应不应该为virtual
如果该基类要派生其它类,则一定要 virtual基类 Coperation 的析构函数没加 virtual 时程序运行结果可以看到加运算类没有被析构。为什么因为工厂类的成员类型为基类指针,它只析构了基类。 基类 Coperation 的析构函数加 virtual 时程序运行结果可以看到所有构造的类都被析构了程序源代码如下 (为了验证设计模式理念的第一个程序)
2012-08-27 20:50:13 904
原创 试题总结
1. 以下代码哪个等同于 int i = (int)p; p 的定义为 char *pA. int i = dynamic_cast (p)B. int i =static_cast(p)C. int i =const_cast(p)D. int i = reinterpret_cast(p) 编程分析:#include using namespace std;
2012-08-27 16:22:03 456
转载 Rabin Karp 算法
原博文地址有更详细的图:http://www.cnblogs.com/wujiawei/archive/2010/08/17/1801790.htmlRabin-Karp算法是由Rabin和Karp提出的一个在实际中有比较好应用的字符串匹配算法,此算法的预处理时间为O(m),但它的在最坏情况下的时间复杂度为O((2n-m+1)m),而平均复杂度接近O(m+n),此算法的主要思想就是通过对字符串
2012-08-27 15:01:55 546
原创 桶排序(Bucket Sort)
桶排序是另外一种以O(n)或者接近O(n)的复杂度排序的算法. 它假设输入的待排序元素是等可能的落在等间隔的值区间内.一个长度为N的数组使用桶排序, 需要长度为N的辅助数组. 等间隔的区间称为桶, 每个桶内落在该区间的元素. 桶排序是基数排序的一种归纳结果 算法的主要思想: 待排序数组A[1...n]内的元素是随机分布在[0,1)区间内的的浮点数.辅助排序数组B[0....n-1]的每一个
2012-08-27 14:41:34 433
原创 strcpy和memcpy的区别 与内部实现
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
2012-08-26 09:34:31 543
原创 最短摘要生成
题目:抽象点说,就是在一个字符串中,找一些目标字符串,找到包含所有目标字符串的最小字符串。题目虽然叫做最短摘要生成,但和实际的搜索snippet的计算还是有比较大的差距的。 先来看看这些序列:w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1 问题在于,如何一次把所有的关键词都扫描到,并且不遗漏。扫描肯定是无法避免的,但是如何把两次扫
2012-08-25 11:46:55 461
原创 求二进制中1 的个数
这是一个经常遇到的经典问题,这里分两个部分讲解和总结,首先对讲解现有的算法,然后再讲解一些改进算法。1.循环法(Iterated Count)int bitcount (unsigned int n) {int count=0; while (n) { count += n & 0x01; n >>= 1 ;
2012-08-23 15:36:55 544
原创 螺旋队列问题2
螺旋队列问题2:如矩阵:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9找出规律,并打印一个NxN的矩阵,规律就是从首坐标开始顺时针依次增大。借鉴我上一遍的方法:http://blog.csdn.net/forgotabout
2012-08-23 10:44:07 581
转载 螺旋队列问题
螺旋队列问题下面是一个螺旋队列: 73 74 75 76 77 78 79 80 81 72 43 44 45 46 47 48 49 50 71 42 21 22 23 24 25 26 51 70 41 20 7 8
2012-08-23 09:53:26 512
转载 逆转一个整数的二进制表示问题
//解法一 #define UNSIGNED_BITS_COUNT 32 unsigned int BitRev3(unsigned int input) { unsigned int ret, i; for(ret = i = 0; i > 1) ret = (ret << 1) | (input & 1); return ret;
2012-08-22 23:40:52 439
原创 实现两个N*N矩阵的乘法,矩阵由一维数组表示
分析下面实现的两种方法int * matrix_multi(int a[], int b[]) 中 malloc 的空间谁去释放,只有调用这个函数的函数记得去释放才行,否则,会出现内存泄露相比之下,int * matrix_multi2(int a[], int b[], int c[])要好些,谁调用,谁先把计算的存储条件都准备好。 #include "stdafx.h"#i
2012-08-22 19:41:21 2244
原创 const 指针与指向const的指针
我们首先要把这两个概念搞清楚!const 指针:指针本身不能被修改指向const的指针:是指针可以被修改,但指针指向的内容不能被修改#include using namespace std; int main(int argc, char *argv[]) { int a=3; int b; /*定义指向cons
2012-08-22 16:07:10 369
原创 正整数的 二进制表示 中 从低位向高位 第1个0/1出现位置 的计算方法
正整数的 二进制表示 中 从低位向高位 第1个 0 出现位置 的计算方法int find_first_0_occur_binary_expression(int n)//由其二进制数的低位往高位找{ int zeroPosition = 0; while ((n & 1) != 0) { zeroPosition++; n = n >> 1; }
2012-08-18 20:18:08 3469
原创 23种设计模式的通俗理解
1、FACTORY追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何
2012-08-16 16:56:11 648
转载 虚拟机 出现 cannot find a valid peer process to connect to
虚拟机出现问题,打开虚拟机是显示:cannot find a valid peer process to connect to解决:1、用process explorer杀掉vmware-vmx.exe进程(如果有的话)2、清除虚拟机目录下的.lck文件3、在dos命令行下执行net start vmx86,以启动peer process在执
2012-08-16 10:00:43 770
原创 双系统中默认启动项无法更改为windows,不想用linux,用如下的方法修复mbr来默认从windws启动
电脑安装XP和linux双系统,而过了一段时间又不想用linux系统时,电脑的默认启动项总是linux,而linux总是read-only system提示,无法在linux中修改默认的启动项,是用这个工具“MbrFix.rar”来修复。 下载地址:http://download.csdn.net/detail/dearwind153/4487705 使
2012-08-09 16:16:16 1038
原创 TP-Link 路由器上网设置方法
配置如下:1. IE中输入192.168.1.1,进入登陆界面2. 输入账号:admin,密码:admin3. 单击“设置向导”->“下一步”,4. 选择“PPPoE”方式,5. 输入上网账号和口令6. 设置无线参数,设置“WPA-PSK/WAP2-PSK”的“PSK”密码,单击“下一步”7. 单击“重启”完成。
2012-08-09 16:02:28 624
mbr修复工具
2012-08-09
键盘按键禁用更改软件
2012-03-14
禁用桌面鼠标右键程序
2012-03-14
VM上Redhat配置上网的正确方法,保证可以
2011-11-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人