免费自助建站软件有哪些wordpress多域名绑定域名
web/
2025/9/26 7:26:13/
文章来源:
免费自助建站软件有哪些,wordpress多域名绑定域名,腾讯企点多少钱一年,房地产信息发布平台官网先看看这个题目#xff1a;test.txt中有42亿个无符号整数#xff0c; 求不存在于test.txt中的最小无符号整数. 限制#xff1a; 可用内存为600MB. 又是大数据。 看到42亿#xff0c; 有灵感没#xff1f; 要知道#xff0c; 2的32次方就是42亿多一点点啊。42亿个无符号… 先看看这个题目test.txt中有42亿个无符号整数 求不存在于test.txt中的最小无符号整数. 限制 可用内存为600MB. 又是大数据。 看到42亿 有灵感没 要知道 2的32次方就是42亿多一点点啊。42亿个无符号整数存在于文件里。 我们能够考虑在内存中用bit-map与之建立二值状态映射。 2的32次方个无符号整数。 须要内存空间为512M, 这个是非常easy计算的。 这么大的空间。 要用栈数组肯定不行。 可考虑用堆。 还是我们之前介绍过的bit-map, 用不着多说别说我不描写叙述思路啊 代码就体现了思路 直接给出代码 #include iostream
#include fstream
using namespace std;#define BIT_INT 32 // 1个unsigned int能够标志32个坑
#define SHIFT 5
#define MASK 0x1f
#define N 4294967296 // 2的32次方unsigned int *a NULL;// 必须用堆
void createArr()
{a new unsigned int[1 N / BIT_INT];
}void deleteArr()
{delete []a;a NULL;
}// 将全部位都初始化为0状态
void setAllZero()
{memset(a, 0, (1 N / BIT_INT) * sizeof(unsigned int));
}// 设置第i位为1
void setOne(unsigned int i)
{a[i SHIFT] | (1 (i MASK));
}// 设置第i位为1
void setZero(unsigned int i)
{a[i SHIFT] ~(1 (i MASK));
}// 检查第i位的值
int getState(unsigned int i)
{return (a[i SHIFT] (1 (i MASK))) 1;
}void setStateFromFile()
{ifstream cin(test.txt); // 我測试的时候 文件里的数据为7 8 9 2 5 2 6 0 1 4 unsigned int n;while(cin n) { setOne(n);}
}void printResult()
{unsigned int i 0;for(i 0; i N; i){if(0 getState(i)){cout i endl; // 3break;}}
}int main()
{createArr();setAllZero();setStateFromFile();printResult();deleteArr();return 0;
} 结果与预期相符。 我们在測试的时候 用的数据较小。 有兴趣的朋友能够把数据量加大 进行測试。 OK, 无非又是利用bit-map来节省空间而已 事实上非常easy。 本文先介绍到这里了。 转载于:https://www.cnblogs.com/lytwajue/p/6820278.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82069.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!