Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Найти все комбинации матрицы


Автор: JavaDell 5.2.2014, 18:57
Запостил этот вопрос в алгоритмах, но так как он имеет отношение и к яве, кину и сюда.

Есть 2х мерный массив (java)
Код

 int[][] array = new int[3][3];

массив может быть заполнен элементами 0 или 1.

Надо пройти ВСЕ возможные комбинации нулей и единиц в этом массиве. Лупами, без использования рекурсии. Каждую получившуюся комбинацию нужно иметь возможноть сравнить с имеющейся (здесь не дано).
Знаю, что количество полученных комбинаций очень велико, 2^(n*n), но все же.

Автор: Magistrus 7.2.2014, 14:05
А почемы именно за лупами нужно сделать? Рекурсия бы здесь выглядела правильнее. 

Если представить, что строка матрицы это четырех битовое число в бинарном представлении 0001 - 1111 (т.е. от 1 до 15), то достаточно четырех вложенных циклов. 

И учись нормально формировать ТЗ, а то понять что-то из того, что ты написал очень сложно.

Автор: Mirkes 4.3.2014, 13:27
Интересная постановка вопроса.
В принципе все решается одним циклом по матрице вытянутой в строку (ну или двумя, если так нужно сохранить матрицу). При этом гарантировано отсутствие повторов.
идея тупая до не могу. Начинаем с матрицы заполненной одними нулями. Далее крутим цикл генерации новых матриц.
Цикл перехода к следующей матрице:
Перебираем элементы двумя циклами по строкам и столбцам
если текущий элемент 0 то ставим вместо него 1 и прерываем обработку, поскольку новая матрица найдена.
если текущий элемент 1 то заменяем нулем и переходим к следующему элементу.

Если цикл не был прерван, то новых матриц нет.
Ну и что дальше?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)