функция дает неверные результаты - PullRequest
2 голосов
/ 17 марта 2011

Я попытался написать следующую функцию для генерации всех комбинаций строки путем перевода алгоритма из текста моего алгоритма.Но он сохраняет всю строку в выводе для всех комбинаций.

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 Ответ

7 голосов
/ 17 марта 2011

Поскольку вы хотите проверить, установлен ли j -й бит в переменной i, вам необходимо использовать побитовый оператор &, а не логический &&:

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