Был задан вопрос о создании списка 10-значных телефонных номеров на PhonePad с учетом набора возможных ходов и стартового номера.Перестановки смещений Java
Phonepad:
* 0 #
Возможные ходы:
То же самое количество ходов королева в шахматах (например, север, юг, восток, запад, северо-восток, северо-запад, юго-восток, юго-запад ... n-пространства на каждую ориентацию)
Начиная номер: 5
До сих пор я реализовал Phonepad как 2-мерного массива полукокса, реализуемый возможные ходы королевы может сделать в HashMap (используя смещения х и у), и я могу сделать Королева перемещается на один квадрат, используя один из возможных ходов.
Следующий шаг - выяснить алгоритм, который даст мне все 10-значные перестановки (номера телефонов), используя возможные шаги в моем HasMap. Допускается повторение номера. * и # не разрешены в списке возвращенных номеров.
Я предположил бы, что, начиная с
- 5555555555, 5555555551, 5555555552 ... и так далее до 0,
- 5555555515, 5555555155, 5555551555 .. 5155555555 .. и с номерами 2 ДО 0
- 5555555151, 5555551515, 5555515155 .. 5151555555 .. и с номерами 2 ДО 0
... и так далее для двузначной комбинации с
Любые предложения о систематическом подходе генерирующего комбинации 10-значной? Даже алгоритм псевдокода оценивается! Позвольте мне знать, требуется ли дополнительное разъяснение.
Заранее благодарен! :)
Это, кажется, проблема с глубиной первого поиска (DFS). См .: http://en.wikipedia.org/wiki/Depth-first_search –