我尝试编写以下函数,通过从算法文本中翻译算法来生成字符串的所有组合。但它会在输出中为所有组合打印整个字符串。
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;
}
谢谢大家。
答案 0 :(得分:7)
由于您要检查变量j
中是否设置了i
位,您需要使用按位&
运算符而不是逻辑&&
:
if(i && (0x1 << j))
^^