алгоритма, который я знаю, что это ниже, но почему я ненавижу этот подход является его сложность время O ((п + 1)!) Тоже хуже в случае больших строкЧто такое алгоритм для печати перестановок строки с большой эффективностью?
Start сортировки строки и печатать это как первую перестановку.
Теперь мы можем найти следующую перестановку следующим образом:Пусть я в последний индекс, что вход [я] < вход [я + 1]. Если такого индекса нет, тогда все готово. Пусть j - последний индекс, такой как вход [i] < вход [j]. Вход обмена [i] с входом [j]. Обратный вход [i + 1] через вход [input.length - 1].
Есть ли лучший подход, чем один из приведенных выше? (Если объяснение через код, пожалуйста, рассмотреть С или С ++) ... просто я ожидал лучшего алгоритма с меньшей временной сложностью, чем один из приведенных выше
см. Это http://stackoverflow.com/questions/361/generate-list-of-all-possible-permutations-of-a-string –