自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(36)
  • 收藏
  • 关注

原创 信息检索中的结果评价

一、无序结果评价1.正确率(Precision)        Precision = 返回结果中的相关文档数 /  返回结果的数目2.召回率(Recall)       Recall = 返回结果中的相关文档数 / 所有原本相关文档数目3.F值,是Precision和Recall的调和平均值F = (β^2+1)PR / (β^2P+R) ,β=1表示正确率和召回率的等权

2013-02-26 10:30:39 3343

原创 组合数求解

从N个数中选择k个,共有多少组合?简单说就是求解C(N,k)。实际问题,有N个教授,要选择k个组成委员会,共有多少种组合方式?递归法:将这N个人按照编号从小到大排好, 1,2,3...,k,...N现在考虑从前M个人中选择k个,那么有两种情况:1. 第M个人选进去,那么就是从剩下的M-1个人中选择k-1个,再加上第M个组成;2. 第M个人不选进去,那么就是直接从

2013-01-02 14:47:49 656

原创 根据新浪微博的mid(url)获得微博id

新浪的每一条微博、评论、私信都有id,同时也有一个url。以微博为例,每条微博都有一个url,例如http://weibo.com/1594536477/z9Ad7z6AG其最后的z9Ad7z6AG就是该微博的url,这个url和微博的id有一个加密对应,就是10进制和62进制之间的转换。转换规则是,url串值从最后往前,每四个字符为一组,作为一个62进制数,然后将各个62进制数转换成

2012-12-13 19:16:52 4406 1

原创 Python中MYSQLdb的乱码问题解决

使用mysql最麻烦的问题在于乱码....查看mysql的编码:命令:  show variables like 'character_set_%';可以看到如下结果:character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_da

2012-12-13 19:07:47 1496

转载 C语言的位域

keyword: 位结构 节省存贮空间 “:”操作符 位域一、首先说概念:位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构比按位运算符更加方便。 位结构定义的一般形式为: struct 位结构名{ 数据类型 [变量名]: 整型常数; //成员称为“位域”或者“位段”数据类型 [变量名]: 整型常数; } 位结构变量; 其中: 数据类型必

2012-12-11 16:35:17 348

原创 内存分配的问题

union V{  struct X {    unsigned char s1:2;    unsigned char s2:3;    unsigned char s3:3;  } x;  unsigned char c;} v;v.c=100;printf("%d\n",v.x.s3);输出是什么?涉及到内存分配

2012-12-11 13:11:51 453

转载 C++中堆栈,堆和栈的区别

堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态

2012-12-06 22:15:44 5953

原创 最长公共子串(连续)问题

动态规划有一个经典问题是最长公共子序列,但是这里的子序列不要求连续,如果要求序列是连续的,我们叫公共子串,那应该如何得到这个串呢?最简单的方法就是依次比较,以某个串为母串,然后生成另一个串的所有长度的子串,依次去母串中比较查找,这里可以采用先从最长的子串开始,减少比较次数,但是复杂度依然很高!然后重新看一下这个问题,我们建立一个比较矩阵来比较两个字符串str1和str2

2012-12-05 15:55:32 22044 9

原创 动态规划之----最长公共子序列(LCS)

这个问题是动态规划算法中的一个经典问题,先看问题描述:LCS:两个字符串 X和 Y,找到他们最长的公共子序列,该序列不要求是连续的。公共子序列的意思就是序列的相对顺序是不变的,但是序列不一定是连续的。例如:X = "BDCABA"Y = "ABCBDAB"他们的最长公共子序列是BCBA和BDAB,长度都为4,找到任意一个即可。LCS问题也满足最优子结构:

2012-12-05 15:07:47 1826 2

原创 Linux下通过RPM安装MySQL

一,下载安装文件在mysql的官网下载以下两个安装包:服务器端:Linux - Generic 2.6 (x86, 32-bit), RPM Package MySQL Server客户端:Linux - Generic 2.6 (x86, 32-bit), RPM Package Client Utilities可以不同时间版本不同,还有不同的机器

2012-12-04 09:08:38 183

原创 常数时间初始化向量

来自《编程珠玑》1.6.9使用更多的空间来换取更少的运行时间存在一个问题:初始化空间本身需要消耗大量的时间。说明如何使用一种技术,在第一次访问向量的某项的时候将其初始化为0。提示:采用空间换时间的方式,并且空间占用和向量长度成线性关系。这种方式仅在【空间很廉价】【时间很昂贵】【向量很稀疏】的时候有用。一直没有想到这个问题怎么处理,后来上网搜了一下。发现了答案。先看答案:

2012-11-29 15:10:40 955

转载 大规模数据查重【合集讨论】

提出问题☆─────────────────────────────────────☆       realchaoren (超人) 于 (Fri Sep 11 23:54:45 2009) 提到:   1. 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。     2. 有10个文件,每个文件1

2012-10-18 09:06:39 825

原创 归并中值

问题:两个数组A、B,都已排好序,现在要求A、B归并后的中值。思路:1.可以采取归并的思路,用四个标记分别指向两个数组的首和尾,然后开始当消除一个共同最小值,则同时消除一个共同最大值,直到最后一个首指针和一个尾指针指向同一个值的时候,复杂度O(len(A)+len(B))2.二分思路。分别找到A和B的中值,如果mid(A)代码:#includ

2012-09-24 10:29:53 408

原创 查找数组中的重复数字

题目:一个长度为N的数组,其中存放了0~N-1的各个数组,要求在O(n)的时间复杂度和O(1)的空间复杂度下找到至少一个在其中重复出现的数字。(可能不止一个重复出现的)思路1.考虑到数组长度为N,而数字都没有大于N-1的,则可以考虑采用下标置换的方法。将数字置换到其值对应的下标位置,如果找到某值其对应下标位置已经存有对应值,则说明此值重复,可返回。代码:

2012-09-24 09:26:32 1445

原创 深度优先搜索(DFS):字符串转换

问题描述:翻译数字串,类似于电话号码翻译:给一个数字串,比如12259,映射到字母数组,比如,1 -> a, 2-> b,... , 12 -> l ,... 26-> z。那么,12259 -> lyi 或 abbei 或 lbei 或 abyi。输入一个数字串,判断是否能转换成字符串,如果能,则打印所以有可能的转换成的字符串。思路:采用深度优先,分别考虑用一个数字字符转换和

2012-09-19 16:08:19 756

原创 寻找最大子树

问题描述:给一个二叉树,每个节点都是正或负整数,如何找到一个子树,它所有节点的和最大? 思路:采用自底向上的计算。先计算左右子树总和值,用左右子树的总和加上当前节点值,如果当前总和大于最大值,则更新最大值,同时将最大子树根节点更新为当前根。简单说,就是后序遍历。代码:#include #include using namespace std;stru

2012-09-19 16:04:09 1986

转载 【转帖】C++中的域结构体

有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节 省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个 区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来

2012-08-01 18:27:25 378

原创 Linux下利用phpize安装php扩展

php有很多扩展功能,我们在初次安装的时候并没有安装某些扩展,可能在使用的过程中,又需要用到这些扩展。php提供了一个phpize工具供我们安装需要的扩展。下面我通过安装socket扩展来介绍phpize的使用:1.找到自己的php安装目录,例如我的目录是home/vsrank/php,在该目录下,找到bin/phpize。如果没有这个工具,则说明没有安装该工具,那么需要安装php

2012-05-21 17:20:25 20875

原创 Kendall's tau

Kendall's tau是一个数据统计中常用的一个系数,用来表示两个序列相关系数,即相似性。该系数的定义如下,两个序列中相对位置(偏序)相同的项目对在所有项目对中所占的比例。可以很容易的知道,总的项目对的个数就是n*(n-1)/2。举个例子说明分母的计算方式,首先两个序列长度要相等,例如序列1是[a,b,c,d],那么其项目对是(a,b)(a,c)(a,d)(b,c)(b,d)(c,d)这六

2012-04-20 11:40:38 1915

原创 在升序数组中查找和为特定值的两个数

思路,从左和右同时遍历数组,如果左右相加大于n,则说明右边的值偏大,则右指针左移;如果比n小,则左指针右移;总共对数组只需要遍历一遍。/*在一个升序数组中查找两个数,使得他们的和为已知数n,时间复杂度O(n)*//*返回距离最近的一对*/int* Find(int *array , int len , int n){ int *re = new int[2];

2012-02-05 10:43:57 896 1

转载 ubunt中ibus的更新

IBus是一个框架,支持多种输入法。问题1:Ubuntu系统选择自带的拼音输入法是错误的,它默认无法输入中文及中文词组,请独立安装其他基于IBus的输入法问题2:Ubuntu系统自带的IBUS1.2.0版本存在bug,在使用backspace键删除字符后输入法将无法继续工作,请用PPA的第三方源将IBus升级为1.3.6及以后版本。(Ubuntu的官方软件源尚未更新到最新版本)

2012-02-04 19:51:25 741

原创 2-1扩展问题

1.对于一个32位的DOWRD,如何计算其二级制中1的个数?2.两个DWORD,计算它们二级制中不同的位数的个数。#include #include using namespace std;//计算一个DWORD中二级制形式中1的个数 int Count( DWORD val ){ int count = 0; while( val ) {

2012-02-04 14:39:46 322

原创 Ubuntu11.04中更新管理器无法初始化问题

刚安装好Ubuntu11.04,想更新一下,结果发现更新管理器无法初始化,同时,Ubuntu的软件中心中的软件信息也刷新不出来。不知道是什么原因,所以就上网查了一下。发现有人提供了下面的命令解决:sudo rm /var/lib/apt/lists/* -vfsudo apt-get update使用后的确解决问题了,所以在此记录一下。但是原因却不知道,如果有有心人看到

2012-01-05 20:20:10 643

原创 最大子序列问题

#include #include using namespace std;/*************************** 求数组list从begin到end中和最大的子序列 ** 参数: list : 要求的数组 begin : 数组的起始位置 end : 数组的结束位置 sbe

2012-01-01 16:54:07 282

原创 判断两个链表是否相交

思路1:最暴力的办法,针对链表1的每一个节点,判断其是否也在链表2中,复杂度O(n*m)。明显不是一个好方法。思路2:给每个节点增加一个标记量,可以是附在链表中的成员,也可以是另外的一个结构,例如用一个数组来存储。先遍历链表1,标记出遍历过的节点,再遍历链表2,如果发现某个节点已经被遍历过,则说明相交。这种方法时间复杂度为O(n+m),空间复杂度O(n)或者O(m)。思路3

2011-12-31 22:47:10 315

转载 数组指针与指针数组

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;

2011-12-29 22:48:43 276

原创 链表操作题目

将一个链表分为两个链表,奇数位置节点为一个链表,偶数位置节点为一个链表,并且两个链表反向。代码:#include using namespace std; //链表节点 template struct Node { Type val; Node *next;};//建立链表,依次输入各个节点值,以0结束 template Node*

2011-12-28 12:30:34 394

原创 typedef用法小结

typedef用于定义类型的同义词,但实现机制和简单的宏转换是不一样的。例如:#include using namespace std; typedef int* PINT;int main(){ PINT pa , pb; int a = 0; int b = 0; pa = &a; pb = &b; return 0

2011-12-28 10:20:22 314

原创 C++ 中的typedef

typedef用于定义类型的同义词,但实现机制和简单的宏转换是不一样的。例如:#include using namespace std; typedef int* PINT;int main(){ PINT pa , pb; int a = 0; int b = 0; pa = &a; pb = &b; return 0;

2011-12-28 09:48:40 92

原创 C++中的const

一、const变量定义一个变量为const,也就是常量,说明这个这个量是不可修改的,既然不可修改,就说明在定义的时候就要初始化。初始化可以用常量初始化,也可以用普通的变量初始化。例如:const int val = 10;int tmp = 20;const int val2 = tmp;cosnt变量的存储以及作用域,先看一段代码:#include using namespac

2011-12-23 12:12:20 316

原创 c++中的static

C++中的static主要有两种用法,第一种是在普通的程序和函数中,第二种是用在类中。两种使用在核心思想上是一致的,但是又有一些地方需要注意。一、非面向对象的static  1.声明为全局变量的static  例子: #include using namespace std;static int n; //static global variablei

2011-12-23 10:22:56 426

原创 一段程序,用于了解C++复制构造函数、赋值构造函数和vector的运行实现机制

#include #include #include #include using namespace std;class Message;class Folder{private: string path; set message;public: Folder(string p):path(p){} ~Fold

2011-12-18 21:16:11 1380

原创 cin.getline()与getline()

C++中有两个getline函数,这两个函数分别定义在不同的头文件中。1.getline()是定义在中的一个行数,用于输入一行string,以enter结束。 函数原型:getline(cin,str);cin:istream类的输入流对象str:待输入的string对象  example 1://《C++ primary plus》第四章编程练习题1#i

2010-11-11 16:18:00 16640

原创 快速排序

快速排序的重点在于Partition过程的实现,该过程主要是将数组分为三段,即:小于key值的一段,key值,大于key值的一段。这里写了两种Partition过程的方式 Partition方式一的代码如下: int Partition(int s[],int p,int r){ /*对s[p...r]进行Partition过程 *以s[p]的值为基准,将数组分为两个

2010-04-12 16:03:00 521

原创 最大堆实现对大优先队列

/* *利用最大堆实现一个最大优先队列*/#include using namespace std; int *queue; //队列int const maxLength = 5; //队列最大长度int curLength = 0;  //当前队列长度 void MAX_HEAPIFY(int*,int,int);void MAX_HEAP_BUIL

2010-04-05 12:12:00 519

原创 堆排序

#include #include #include using namespace std;int *A;int const LEN = 10; void MAX_HEAPIFY(int a[],int i,int len);void BUILD_MAX_HEAP(int a[],int len);void HEAP_SORT(int a[],int len)

2010-04-05 09:43:00 303

空空如也

空空如也

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

TA关注的人

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