摘要: 转载自http://blog.sina.com.cn/s/blog_4ce0162301013v81.html题目:给定一个包含40亿个随机排列的顺序文件,找到一个不在文件中的32位整数,在有足够内存的情况下应该如何解决该问题?如果有几个外部的临时文件可用,但是仅有几百字节的内存,又该如何解决?(1)对于有足够内存的情况,完全可以采用位图存储的方法,详细内容看《编程珠玑》第一章。(2)Ed Reingold 给出了另外一种解法。 问题的关键是只要找到一个数字,那么我们把问题简化一下,给定一个文件,里头最多包含16个4bit的整数,找到一个不在文件中的4bit整数。假设这十个数是1 2 3 4. 阅读全文
posted @ 2013-04-25 11:15 xiaowenchao 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 原书代码如下:#include <iostream>#include <math.h>#include <time.h>#define BITSPERWORD 32#define SHIFT 5#define MASK 0x1F#define M 100#define N 10000000int a[1+N/BITSPERWORD];void set(int i){ a[i>>SHIFT] |= (1<<(i & MASK));}void clr(int i){ a[i>>SHIFT] &= ~(1< 阅读全文
posted @ 2013-04-25 11:12 xiaowenchao 阅读(212) 评论(0) 推荐(0) 编辑