功能给出错误的结果

时间:2011-03-17 19:33:45

标签: c++ algorithm operators combinations

我尝试编写以下函数,通过从算法文本中翻译算法来生成字符串的所有组合。但它会在输出中为所有组合打印整个字符串。

len = strlen(str);
for(i=0;i<pow(2,len);i++) 
{
        for(j=0;j<len;j++) 
        {
                if(i && (0x1 << j)) 
                {
                        cout<<str[j];
                }
        }
        cout<<endl;
}

谢谢大家。

1 个答案:

答案 0 :(得分:7)

由于您要检查变量j中是否设置了i位,您需要使用按位&运算符而不是逻辑&&

if(i && (0x1 << j))
     ^^