Вопрос № 27541: Здравствуйте!
столкнулся со следующей проблемой: имеется двумерный массив из букв (n*m). Необходимо составить всевозможные слова длинной m. Элементы массива не повторяются.
Остановился на бинарных деревьях, но как это решается на PHP не знаю...
Вопрос № 27.541
Здравствуйте!
столкнулся со следующей проблемой: имеется двумерный массив из букв (n*m). Необходимо составить всевозможные слова длинной m. Элементы массива не повторяются.
Остановился на бинарных деревьях, но как это решается на PHP не знаю. Помогите с деревьями или предложите альтернативу. Заранее
бланодарен.
Александр. oCa.mail@mail.ru
Отправлен: 11.10.2005, 08:01
Вопрос задал: OCa (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Lector
Здравствуйте, OCa!
Я так понял, что вам нужно вставить всевозможные слова длиной m в массив m*n, где n - общее количество возможных слов, в m - длина слова.
Дело в том, что ваша задача - это типичное декартово произведение и для меня самый простой способ его получения - это использование БД.
Для этого просто создайте таблицу буквы. Внесите в неё все возможные буквы, которые хотите использовать для создания слова. Потом просто делайте из неё выборку без связывания:
для слов длиной 2:
select a.litera_name, b.litera_name from litera a, litera b/
Аналогично для большей длины.
Если для этих строк нужна ещё предварительная обработка - тоже перенесите её в БД - используйте переменные, если ваша версия mysql выше пятой, или ещё лучше реализовать обработку на pl/|sql в Oracle. Тогда код для этой задачи будет доступен из любого места, а не только из конкретной страницы php.
--------- Хочешь помочь старику - сделай вместо него. Хочешь помочь новичку - сделай вместе с ним. Хочешь помочь мастеру - отойди и не мешай, а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: 5-ый класс)
Отправлен: 11.10.2005, 11:25