【发布时间】:2011-03-17 19:33:44
【问题描述】:
我尝试编写以下函数,通过从我的算法文本中翻译算法来生成字符串的所有组合。但它会在所有组合的输出中保留打印整个字符串。
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;
}
谢谢大家。
【问题讨论】:
-
因为这是 C++,所以更喜欢使用
std::string到char *。获取std::string的长度比在char *中扫描'\0'更快。此外,std::string更安全,可以增长。 -
@Thomas Matthews:您确实意识到
(len * len)不能替代pow(2, len),对吧? -
@Blastfurnace:对不起,我的错。参数搞混了。删除了关于
pow(2, len) == (len * len)的评论。
标签: c++ algorithm operators combinations