基于visual Studio2013解决面试题之1204大数组查找

来源:互联网 发布:中国自己的域名服务器 编辑:程序博客网 时间:2024/05/01 07:08



题目



解决代码及点评

/*有40亿个整数,在文件里保存,现在要找出这个文件里没有的某个整数,找到一个就行这个40亿个整数大概要花掉4G内存,全部读出来是不可取的我们可以通过位域来标记哪些存在哪些不存在这样一个整数可以表示32个整数的存在情况,需要的内存是4G/32 = 1G/8 = 128M然后将整数一个个读出来,根据整数的值,标记位域,最后再查找位域,哪个位置是0即可*/#include <iostream>#include <stdio.h> using namespace std;#define BITSPERWORD 32 #define SHIFT 5 #define MASK 0x1F #define N 10000000 int a[1 + N/BITSPERWORD]; void set(int i) { a[i>>SHIFT] |= (1 <<(i & MASK));   //第i位清零} void clr(int i){ a[i>>SHIFT] &= ~(1 <<(i & MASK)); //第i位1} int test(int i){ return a[i>>SHIFT] & (1 <<(i & MASK)); } int main(){ int i; for (i = 0; i < N; i++) clr(i); while (scanf_s("%d", &i) != EOF) set(i); i = 0;while(i<N){if (test(i))     cout<< i<<" ";i++;}system("pause");return 0; }


代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果








0 0