`
highsky
  • 浏览: 276213 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

利用位运算的求全集方法

J# 
阅读更多

今天想起以前在项目里写的 求子集的方法,当时也是仿照别人的写的,利用一点点位运算,比回溯来求更直观。 可是发现一下子 还是不容易记起来。索性还是记在存储介质上,留待随机访问来得好。

 

下面的代码是我在网上找到的代码稍微改改而成

 

int n = 4; //以四个元素为例
int x[4]; //这里只求位置,不列具体元素

void genSubset()
{
    for(int i = 0; i < (1 << n); i++)
    {
        for(int j = 0; j < n; j++)
        {
            if( (i & (1 << j) ) == 0) //逐位访问,得到元素组合方式,当然非一步之功
                x[j] = 0;
            else
                x[j] = 1;
        }
        for(int j = 0; j < n; j++)
            cout<<x[j];
            cout<<endl;
    }
}

 

还是比较直观明了的,当时项目里只求真子集,上面的代码是求全集的例子。

 

分享到:
评论

相关推荐

    ACM位运算技巧

    ### ACM位运算技巧详解 #### 位运算基础与特性 位运算是一种在计算机科学中广泛使用的操作,它直接对整数的二进制位进行处理。位运算具有速度快、节省空间的特点,在算法设计、数据结构优化以及编程竞赛中尤为重要...

    基于位运算的两种字符串加密解密算法

    这两种方法都利用了位运算的高效性和简洁性,不仅能够实现字符串的加密解密,还能够在一定程度上节省内存空间,并提高程序执行速度。通过对这些算法的学习,可以帮助学生更好地理解和掌握位运算的概念及其实际应用。

    位运算.pdf

    4. **求反运算(~)**:求反运算符`~`是单目运算符,用于对参与运算的数的各个二进制位进行求反操作。例如,~9的结果为1111111111110110。 ```c int c = ~9; // 结果 c = -10 (补码形式) ``` 5. **左移运算()**:...

    位运算使用技巧

    位运算是一种直接对整数在内存中的二进制表示进行操作的方法。计算机内部所有的数据都以二进制形式存储,因此位运算能够直接作用于这些数据,从而实现快速高效的处理。 #### 二、位运算的应用场景 位运算的应用...

    位运算符,位运算,位段

    位运算在计算机科学中扮演着重要的角色,尤其是在底层系统编程和硬件交互时。位运算符允许程序员直接操作数据的二进制位,从而实现高效的数据处理和计算。本文将详细介绍位运算符,位运算,以及位段的概念。 首先,...

    位运算及其相关技巧在程序设计的应用

    此方法利用了XOR运算的特性,避免了传统交换方法中使用临时变量的开销。 #### 3.2 位运算在加密中的应用 XOR运算可以用于简单的数据加密,如通过与一个密钥进行XOR操作,使得原始数据变得不可读,而接收方只需再次...

    加密解密 (利用异或运算)

    加密解密 (利用异或运算) 进行异或加密解密运算

    位运算的妙用

    - **交换两数**: 传统交换两个数的方法是使用中间变量,但通过位运算也可以实现,如`a = a ^ b; b = a ^ b; a = a ^ b;`,利用异或运算的性质,使得a和b互换值。 - **变换符号**: 若要改变一个数的符号,可以使用...

    位运算.pdf 精心收集的资料,重新编辑

    - 速度:位运算速度极快,但仍然存在耗时,应合理利用赋值运算符如`^=`,`|=`,`&=`。 - 范围:移位运算时要注意防止溢出。 - 类型转换:不同类型位运算时,系统会自动进行位对齐和扩展。 5. 位运算应用实例: ...

    logisim16位自动运算器

    在此阶段,实验者需要利用已有的16位运算器,结合RAM模块、寄存器和计数器构建一个自动运算电路。这个电路将在时钟脉冲的驱动下,连续对RAM的0-15号单元进行累加操作,并将结果存储到16-31号单元。设计中需考虑如何...

    基于as3的位运算详解

    `等同于`i--`,这些方法利用了补码运算的特性。 取反(NOT)运算符`~`可以用来改变数字的符号,如`i = -i;`可以改写为`i = ~i + 1;`或`i = (i ^ -1) + 1;`,这在某些情况下能提高300%的速度。 使用位运算进行模...

    易语言位运算实现加法运算

    在易语言中,我们可以利用位运算来实现加法运算,这通常涉及到位移、按位与、按位或和按位异或等基本位运算符。本篇文章将深入探讨如何在易语言中通过位运算实现加法功能。 首先,让我们了解易语言的基本语法。...

    ACM位运算技巧大全.doc(超级详细)

    具体方法是构造一个掩码,其中该特定位置0,其他位均为1,然后与原数进行按位与运算。 ```plaintext int mask = ~(1 ); // 将第k位置0,其余位置1 int result = x & mask; // 清零第k位 ``` - **提取某数中指...

    位运算教程

    通过位运算,我们可以在较低的层次上进行数据处理,利用这些操作可以编写出效率更高的程序。 位运算的产生和基本位操作符是位运算的基础。位运算通常操作无符号数,它的基本操作符包括位与(&)、位或(|)、位非(~)、...

    Java位运算的应用

    10. **计算绝对值**:`abs(x)`函数通过位运算求`x`的绝对值。`x&gt;&gt;31`获取`x`的符号位,`x^y`再与`y`异或,可以将负数变为正数,正数不变。 11. **取模运算**:`a%(2^n)`等价于`a&(2^n-1)`,这在不产生溢出的情况下...

    计算机组成原理—运算器设计实验

    1. 利用四片AM2901构建16位ALU,每片芯片处理4位,通过发光二极管展示运算结果,或者在连机实验中通过上位机屏幕显示。 2. 使用两片74LS181,以并行或串行方式组合成8位ALU,数据开关提供运算数据,运算结果通过显示...

    按位与_按位或_按位异或_运算

    除了以上三种主要的按位运算外,还有求反运算、左移运算和右移运算等。 **求反运算(Bitwise NOT)** 求反运算符`~`是一种单目运算符,用于实现对一个数值各二进位的求反运算。例如,`~9`的运算为: ``` ~...

Global site tag (gtag.js) - Google Analytics