摘要: 由于在C语言中没有函数重载,解决不定数目函数参数的问题变得比较麻烦,即使采用C++,如果参数个数不确定,也很难采用函数重载。所使用的宏:Void va_start(va_list arg_ptr, prev_param);Type va_arg(va_list arg_ptr, type);Void va_end(va_list, arg_ptr);Typedef char *va_list;#define _INTSIZEOF(n) ((sizeof(n) + sizeof(int)-1) & ~ (sizeof(int) - 1)) (&与操作,~取反)#define va 阅读全文
posted @ 2012-05-10 19:01 爱也玲珑 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 哈希,通过哈希函数将关键字与存储位置建立一个对应关系,这样在查找关键字的过程中就没比较进行一个一个比较,而直接定位关键字所在的位置,是一种以空间换取时间的方式。由于所映射的地址空间有限及哈希函数的设置,就是产生冲突,需要建立处理冲突的方法。在一般情况下,冲突只能尽可能的减少,而不能完全避免。那么什么是一个好的哈希呢?通俗点说,好的哈希也许就是能使关键字地址分布均匀,冲突少。下面我们具体一下好的哈希的几个特点: 哈希算法应满足的特性:(1)平衡性(Balance) 平衡性是指将关键字的哈希地址均匀地分布在地址空间中,使地址空间得到充分利用,这是设计哈希的一个基本特性。(2)单调性(Monot.. 阅读全文
posted @ 2012-05-02 10:02 爱也玲珑 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 模板不支持分离编译, 把你模板类的声明和实现放到.h文件里面。(文章原文链接:http://blog.csdn.net/bichenggui/article/details/4207084):首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)文件格式,并且本身包含的就已经是二进制码,但是不一定能够执行,因为并不保证其中一定 阅读全文
posted @ 2012-05-01 12:20 爱也玲珑 阅读(1207) 评论(0) 推荐(0) 编辑
摘要: 题目大意:输入两个表示区间范围的整数[x,y]然后输入N个无序区间[x1,y1], [x2, y2], [x3, y3]...求解第一次输入的区间是否在N个无序区间组合成的大区间中。法一:使用并查集,对每个区间合并到一个子树上,最后判断源区间的x和y的根是否相同。View Code #include<iostream>using namespace std;const int size = 100;int father[size];int rank[size];void make_set(int n){ for(int i = 1; i <= n; i ++){ fathe. 阅读全文
posted @ 2012-04-28 18:17 爱也玲珑 阅读(1671) 评论(0) 推荐(0) 编辑
摘要: 给定n个实数x1,x2,…xn,求这n个数在实轴上相邻两个数之间的最大差值,要求设计线性的时间算法。最容易想到的是先对n个数据进行排序,然后一边扫描即可确定相邻的最大间隙。但该方法不能满足线性时间的要求。故采取如下方法:1. 找到n个数据中最大和最小数据maxnum和minnum;2. 用n—2个点等分区间[minnum, maxnum],即将[minnum, maxnum]等分为n-1个区间(前闭后开区间),将这些区间看做桶,编号为1,2,…n-1,且桶i的上界和桶i+ 1的下界相同,即每个桶的大小相同;每个桶的大小: space = (maxnum - minnum) / (n - 1), 阅读全文
posted @ 2012-04-19 21:45 爱也玲珑 阅读(332) 评论(0) 推荐(0) 编辑
摘要: strlen 原型:extern int strlen(char *s); 功能:计算字符串s的长度strcpy 原型:char *strcpy(char *dest, const char *src) 功能:把src所指由NULL结束的字符串复制到dest所指的数组中,strncpy 原型:extern char *strncpy(char *dest, char *src, int n); 功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。(注意:dest必须是字符数组,如果是字符指针则会有问题)int main(){ char s[20] = ". 阅读全文
posted @ 2012-04-10 21:14 爱也玲珑 阅读(348) 评论(0) 推荐(0) 编辑
摘要: Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。trie树的应用:1.有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。2.1000万字符串,其中有些是重复的,需要把重复的全部去掉,保留没有重复的字符串。请怎么设计和实现?3.一个文本文件,大约有 阅读全文
posted @ 2012-04-09 23:25 爱也玲珑 阅读(2564) 评论(0) 推荐(0) 编辑
摘要: 1、复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用&quot;alter&quot;添加,而且容易搞错。 2、只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2;或 CREATE TABLE 新表 LIKE 旧表; 3、复制旧表的数据 阅读全文
posted @ 2012-04-02 20:42 爱也玲珑 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。 s 遍历文件b,采取和a相同的方式将url分别存储到1000各小文件(记为)。这样处理后,所有可能相同的url都在对应的小文件()中,不对应的小文件不可能有相同的url。然后我们只要求出100 阅读全文
posted @ 2012-03-30 22:48 爱也玲珑 阅读(1595) 评论(0) 推荐(0) 编辑
摘要: heap和stack的差别 在进行c/c++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可分为以下几个类别。 栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收,存放new、malloc等变量。但是它与数据结构中的堆是两回事,分配方式倒是类似于链表。 全局区(静态区)(static):全局变量和static变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和static变量在相邻的另一块区域。程序... 阅读全文
posted @ 2012-03-28 17:38 爱也玲珑 阅读(474) 评论(0) 推荐(0) 编辑