`
hermitte
  • 浏览: 30319 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

得到一个集合的所有子集的算法,非常巧,用二进制移位操作实现的

阅读更多
private static ArrayList SubSet(ArrayList set)
{
ArrayList subSet = new ArrayList();

ArrayList itemSet = new ArrayList();

int num = 1 << set.Count;

int bit;
int mask = 0; ;
for (int i = 0; i < num;i++ )
{
itemSet = new ArrayList();
for (int j = 0; j < set.Count; j++)
{
mask = 1 << j;
bit = i & mask;
if (bit >0) {

itemSet.Add(set[j]);

}
}
if (itemSet.Count > 0)
{
subSet.Add(itemSet);
}


}



return subSet;
}
分享到:
评论

相关推荐

    CRC校验算法详细介绍

    CRC算法的核心在于使用二进制循环码(Binary Cyclic Codes),而BCH算法则是基于二进制循环码的一种特定形式,属于循环码的子集,以其发明者Bose、Chaudhuri和Hocquenghem的名字命名。BCH码不仅具有高效的编码和解码...

    异或和资料介绍.zip

    7. **循环移位**:异或还可以用来实现循环移位,例如要将一个数向右移动n位,可以使用 x = x ^ (x ),然后 x = x ^ (x &gt;&gt; n),这样x的二进制表示就被向右循环移位了n位。 8. **故障检测**:在计算机硬件中,异或门...

    Matters Computational

    - **1.1.10 第i个设置比特的索引 (Index of the i-th set bit)**:提供了一个算法来查找第i个1的位置。 - **1.1.11 避免分支 (Avoiding branches)**:介绍了一种避免在计算过程中使用条件语句的方法,从而提高效率。...

    des算法加密bmp图像

    它使用56位的密钥对64位的数据块进行操作,通过一系列复杂的数学运算(如置换、异或等)实现加密和解密。DES虽然在当今被视为安全性较低的加密算法,但对于理解加密原理和实践来说,仍然是一个重要的学习对象。 在...

    NOIP2018普及组C++试题

    - 统计一个非负整数的二进制形式中1的个数,可以通过移位或按位与操作实现。 - 使用按位与操作\(x &= x - 1\),每次循环都会将x的最低位的1变成0,直至x变为0,从而统计出1的个数。 **15. 数据结构** - **知识点...

    面试必备c语言考试真题

    - 使用6位二进制数来表示数组中元素的子集,每一位比特位代表一个元素。如果该位为1,则表示子集中包含对应的元素;若为0,则不包含。 - 枚举从0到\(2^6-1\)的所有数,对于每一个数,检查它所表示的子集的元素之和...

    北京理工大学813计算机科学与技术专业基础综合2021年初试大纲.pdf

    - **树的概念**:树是由n(n≥0)个结点构成的有限集合,其中一个特定的称为根,其余的结点可以划分为m(m&gt;0)个互不相交的子集T1,T2,...,Tm,每个子集本身又是一棵树。 - **二叉树**: - **定义及其主要特征**:二叉树...

    (完整word版)matlab卷积码程序.docx

    - 状态循环遍历所有可能的组合,每个状态对应一个寄存器的配置。 4. **汉明距离和状态转移**: - `state_metric`数组记录了在每个状态下汉明距离的变化,这在Viterbi译码算法中非常重要,用于找到最可能的数据...

    bit-vector:Haskell 的简单位向量

    位向量(Bit Vector)是一种在计算机科学中广泛使用的数据结构,特别是在低级编程和算法设计中。在 Haskell 这种纯函数...这个库对于处理二进制数据、实现高效算法,或是在 Haskell 中进行底层编程都是非常有用的工具。

Global site tag (gtag.js) - Google Analytics