Переставляя через массив символов - PullRequest
3 голосов
/ 20 июля 2010

Предположим, вам нужно обнаружить все возможные сочетания 'n' различных символов, скажем, 'a', 'b', 'c' Можете ли вы предложить алгоритм, который я могу использовать, чтобы сделать это? Вообще говоря, как бы вы поступили?

Ответы [ 2 ]

1 голос
/ 20 июля 2010

Пусть 'Perms' будет набором найденных перестановок, а 'Used' будет списком выбранных символов.

Чтобы найти перестановки n символов из набора S:

  1. Если n = 0, то используется перестановка. Добавьте его в Пермь и верните.
  2. Для каждого символа C в S:
    1. Удалить C из S и добавить (или протолкнуть) его к U.
    2. Найти перестановки n-1 символов из S.
    3. Удалите конец (или щелчок) U и добавьте C к S.

Когда вы вернулись из поиска перестановок из n символов, Perms содержит все возможные перестановки.

Обратите внимание, все это делается с помощью наборов и списков. Есть более легкие альтернативы, но эти структуры делают шаги более простыми, поэтому я использовал их.

1 голос
/ 20 июля 2010

Здесь есть реализация Java здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...