行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页

2012年5月9日

摘要: #include <iostream>#include <vector>#include <iterator>#include <algorithm>struct Area { Area():x(0), y(0) {} Area(int a, int b):x(a),y(b){} int x,y; bool operator<(const Area &rhs) { return x<rhs.x; } //排序用到 friend ostream& operator<<(ostream &out, co 阅读全文
posted @ 2012-05-09 11:09 windflying 阅读(356) 评论(0) 推荐(0) 编辑

摘要: 题目:p215 寻找不能被[2,31]中连续两个数整除,但能被其它数整除的数long long GCD(long long a, long long b){ if (b == 0) return a; return GCD(b, a%b);}long long LCM(long long a, long long b){ return a*b/GCD(a,b);}long long FindNumber(){ long long lcm=2; for (int j=2; j<31; j++) { lcm=1; for... 阅读全文
posted @ 2012-05-09 10:32 windflying 阅读(295) 评论(0) 推荐(0) 编辑

摘要: 对于一个正整数,输出它所有可能的连续自然数之和的算式1+2=34+5=92+3+4=9根据题意,有:s+(s+1)+(s+2)+...+(s+k) = n(k+1)s + (k+1)k/2 = n(k+1)(2s+k)=2ns = (2n/(k+1)-k)/2因为 s, k都是整数,所以应满足2n%(k+1)==0 && (2n/(k+1)-k)%2==0void Print(int n, int s, int k){ printf("%d=",n); for (int i=s; i<=s+k; i++) { if (i==s) print... 阅读全文
posted @ 2012-05-09 08:39 windflying 阅读(730) 评论(1) 推荐(1) 编辑

2012年4月10日

摘要: 题目:知道一棵二叉树的前序序列、中序系列,打印出它的后序系列下面算法的时间复杂度:O(n^2) -- 最坏情况就是左单支树/* Kown the preorder listing and the inorder listing of a tree, print it's postorder listing*/void PrintPostOrder(const char *pre, int s1, int e1, const char *in, int s2, int e2){ if (s1 > e1 || s2 > e2) re... 阅读全文
posted @ 2012-04-10 21:31 windflying 阅读(492) 评论(0) 推荐(0) 编辑

2012年4月6日

摘要: 1 异常规格(exception specification)用来指定某个函数可能抛出哪些异常,例如:void fun() throw(bad_alloc); //fun()只能丢出bad_alloc异常void fun() throw(); //fun()不抛出任何异常void fun() throw()(E1, E2, E3); //fun()只能丢出E1, E2, E3异常2 命名空间定义命名空间namespace uvsjoh { int a; void fun() { cout<< "uvsjoh::fun" << endl; }};nam 阅读全文
posted @ 2012-04-06 13:45 windflying 阅读(238) 评论(0) 推荐(0) 编辑

2012年3月27日

摘要: /* 不用关系符和if比较大小 */#define MAX(a, b) (a/b)?a:b#define MIN(a, b) (a/b)?b:a/* 上面的方法,有个缺点,b不能为0 下面的方法可以解决这个问题*/#define MAX(a, b) (a+b+abs(a-b))/2#define MIN(a, b) (a+b-abs(a-b))/2/* 交换两个数的值 */#define SWAP(a, b) (a=a^b, b=a^b, a=a^b)如果需要加入一段在main退出后执行的代码,可以用atexit函数注册一个函数。函数原型为void ()(void)void fun(void) 阅读全文
posted @ 2012-03-27 21:15 windflying 阅读(493) 评论(0) 推荐(0) 编辑

摘要: 基本概念所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2)。设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m>=n,如果对于不同的key1,key2属于X,有h(key1)!=h(key2),那么称h为完美哈希函数,当m=n时,h称为最小完美哈希函数(这个时候就是一一映射了)。在处理大规模字符串数据时,经常要为每个字符串分配一个整数ID。这就需要一个字符串的哈希函数。怎么样找到一个完美的字符串hash函数呢?有一些常用的字符串hash函数。像BKDRHash,APHash,DJBHash,JSHash,R 阅读全文
posted @ 2012-03-27 20:35 windflying 阅读(35702) 评论(2) 推荐(6) 编辑

2012年3月26日

摘要: 最大堆即大根堆 -- 求前n小最小堆即小根堆 -- 求前n大比如求前n小,对于当前元素,和最大堆的堆顶元素(即堆最大值)比较,如果小于堆顶元素,则替换堆顶元素,并调整堆。这样扫描一遍就可以得到最小的n个元素,效率非常高。问题实例:100w个数中找最大的前100个数1 INT_MIN初始化最小堆2 读入一个数,如果大于堆顶元素,则替换堆顶元素,并调整堆//base index 1#define LCHILD(i) (2*(i))#define RCHILD(i) (2*(i)+1)enum { BIGHEAP=0, SMALLHEAP=1,};//Adjust the heaptem... 阅读全文
posted @ 2012-03-26 23:32 windflying 阅读(1066) 评论(0) 推荐(0) 编辑

摘要: Bloom Filter的用途:1查询一个元素是否在一个集合中2 判重Bloom filter是一个包含m位的位数组filter长度: m位元素个数: n位hash函数个数: k个知道元素个数即n,如何确定m和k呢?这还和要求的错误率有关。1 首先,我们会确定允许的错误率E。当hash函数个数k=(ln2)*(m/n) = 0.693*(m/n)时错误率最小。2 在错误率不大于E的情况下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以.. 阅读全文
posted @ 2012-03-26 21:10 windflying 阅读(271) 评论(0) 推荐(0) 编辑

2012年3月24日

摘要: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串 的长度为1-255字节。假设目前有一千万个记录, 这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个 。一个查询串的重复度越高,说明查询它的用户越多, 也就是越热门。请你统计最热门的10个查询串,要求使用的内存不能超过1G。 (1)请描述你解决这个问题的思路; (2)请给出主要的处理流程,算法,以及算法的复杂度。分析:直接放到内存需要的空间 255*1000 0000 = 255 * 10M = 2.5G (内存限制1G)去重复后300 0000 * 255 = 255 * 3M < 1 阅读全文
posted @ 2012-03-24 11:55 windflying 阅读(401) 评论(0) 推荐(1) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页