![]() |
|
|
Регистрация | << Правила форума >> | 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]. По идее можно сделать универсальный алгоритм ( функцию ) |