`
highsky
  • 浏览: 269509 次
  • 性别: 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;
    }
}

 

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics