Алгоритм для нахождения затем большей перестановки данной строки

<style>
#outer { text-align: center; }
#inner { width:500px; text-align: left; margin: 0 auto; }
.t { float: left; width:240px; border: 1px solid black;}
#clearit { clear: both; }
</style>
55
задан Ðаn 26 October 2009 в 00:20
поделиться

2 ответа

В Википедии есть хорошая статья о генерации лексикографического порядка. В нем также описан алгоритм генерации следующей перестановки.

Цитата:

Следующий алгоритм генерирует следующую перестановку лексикографически после данной перестановки. Он изменяет данную перестановку на месте.

  1. Найдите наивысший индекс i , такой, что s [i] . Если такого индекса не существует, перестановка является последней перестановкой.
  2. Найдите наивысший индекс j> i такой, что s [j]> s [i] . Такой j должен существовать, поскольку i + 1 является таким индексом.
  3. Поменять местами s [i] на s [j] .
  4. Измените порядок всех элементов после индекса i до последнего элемента.
139
ответ дан 26 November 2019 в 17:40
поделиться

Домашнее задание? В любом случае, можете посмотреть на функцию C ++ std :: next_permutation, или это:

http://blog.bjrn.se/2008/04/lexicographic-permutations-using.html

4
ответ дан 26 November 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: