首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用二进制实现集合

用二进制实现集合:用整数中的每一位表示集合中的一个元素,如果整数第i位为1,表示整数i在集合中。

用二进制表示集合的好处不言而喻,高效、简单,而且用一个整数来表示一个集合,不同集合对应的整数肯定也不一样。

当用二进制表示集合时,因为二进制中存储的都是整型非负数,所以,如果一个集合中的元素不是非负数,那么只有找方法将它们映射到非负整数上,比如集合s,内容是“a,b,c,d,e”,为了让集合中的元素与整数一一对应,可以这样处理:int i = s[i] -‘a’。

将集合中每个元素转化为整数后,再对这些整数用二进制进行表示。

举个简单的例子:

设集合s = 0; //此时集合s为空

bool JudgeIn(int i){ //判断i是否在集合s中

return s & (1

}

//如果集合中原来有i,现在就会把i从集合中去掉,如果集合中原来没有i,现在就会把i加入集合

void RemoveEle(int i){

s = s ^ (1

}

//判断两个集合是否相同

void Equal(int s1 , int s2){

return s1 == s2;

}

以后有时间会详细举几个二进制表示集合的经典应用,大家会看到二进制表示集合的巨大威力。

山猫,一个专注于高级计算机技术分享的团队。

如果大家有什么问题或技术需求,可以后台留言或加山猫小墨的微信(二维码在页面底部)。

小墨简介:资深白帽,国内某互联网公司研发负责人,现从事机器学习、神经网络相关算法研究。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180202G12ONX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券