![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте. Есть поле M*N. Есть Q фигур. Нужно для всех возможных расстановок этих Q фигур выполнить над матрицей (полем) некие операции. Подскажите идею, как реализовать перебор возможных комбинаций.
Поле - целочисленная матрица. Фигуры - определенное число. Переставлять нужно в области, ограниченной крайними столбцами/строками, исключая их. Своеобразную "рамочку" не трогать. Спасибо заранее. Последний раз редактировалось m0nzt3r, 27.12.2009 в 00:59. |
#2
|
||||
|
||||
![]() 3D-тетрис что-ли делаете?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() Не, не тетрис. Кстати, расставляемые элементы - одинаковы. То бишь главное факт занимания ими ячейки, а в каком они порядке - не важно. Главное, чтобы все три были в трех разных местах. Суть - генерация всевозможных лабиринтов с Q закрашенными ячейками.
|
#4
|
||||
|
||||
![]() Т.е. Q меньше M*N и должны быть все расположены, каждая один раз - вот это перебрать ?
|
#5
|
||||
|
||||
![]() Цитата:
|
#6
|
||||
|
||||
![]() С учетом того, что любой ячейке можно сопоставить число от 0 до (M*N-1) [i + j*M]. технология где-то так:
Массив размерностью Q ( ms[0] определяет положение первого элемента, ms[1] второго ...) А дальше перебор с вложенностью Q Т.е для каждого ms[0] (от 0 до (M*N-1) ) перебор всех ms[1] (от 0 до (M*N-1) ) где ms[0] <> ms[1] для этой пары соответственно ms[2] (от 0 до (M*N-1) ) где ms[2]<>ms[0] и ms[2]<>ms[1]. По идее можно сделать универсальный алгоритм ( функцию ) |
#7
|
||||
|
||||
![]() А наложить его потом на внутреннюю область думаю не трудно будет.
Если например принять что [0,0] соответствует [2,2] то [i,j] соотв. [i+2,j+2]. |
#8
|
||||
|
||||
![]() Уфф, что-то сложновато. Завтра попробую перечитать и осмыслить.
|
#9
|
||||
|
||||
![]() Набросал немного с использованием классов ( смотри UPerebor.pas )
Думаю еще попробовать попозже реализацию последевательного построения карты разными типами фигур ( если конечно стоит ) Или лучше попробовать перебор на карте с произвольно расположенными препятствиями ( Map[Row, Col] = 0 значит ячейка свободна ). И заметил что надо заменить PHP код:
Последний раз редактировалось s0Creator, 30.12.2009 в 17:00. |