Генерирование всех комбинаций вектора строк

Обновить

April 2019

Просмотры

1.1k раз

1

Я пытаюсь решить проблемы некоторого UVA, и я хочу, чтобы генерировать все возможные комбинации массива струны. Например :

    string str[]={"abcd","efg","hij"};

Таким образом, программа должна печатать:

    >abcd efg hij
    >abcd hij efg
    >hij abcd efg
    >hij efg abcd 
    >efg abcd hij
    >efg hij abcd

1 ответы

1

I think you are looking for STL's next_permutation algorithm.

Applied to your example, it should look something like this:

std::sort (str, str+3);

std::cout << "The 3! possible permutations with 3 elements:\n";
do {
  std::cout << str[0] << ' ' << str[1] << ' ' << str[2] << '\n';
} while ( std::next_permutation(str, str+3) );

Связанные вопросы