2013-09-04 5 views
0

мне нужна ваша помощь в построении алгоритма для решения следующей задачи:Ищешь алгоритм для подсчета числа возможных моделей

A 5x5 table can be filled with the values ​​0 and 1 so that each line and each column of the table consists of exactly two ones and three zeros. How many solutions exist?

Если вы хотите, чтобы обеспечить некоторый код, вы можете свободно использовать свой предпочтительный язык. В основном я использую R, Matlab и Python.

Я попытался преобразовать таблицу в вектор:

unique(perms([ones(1,10),zeros(1,15)]), 'rows') 

Затем для каждой строки, я бы сформировать таблицу 5x5 и проверьте, все строчные суммы и Col суммы равны 2. Но вышеприведенная команда генерируется ошибка: ??? Maximum variable size allowed by the program is exceeded.

+4

вы могли бы описать то, что вы пробовали? – Federico

+1

Такой маленький стол: перестаньте думать, сделайте грубый подход. – MrSmith42

+1

@ MrSmith42 - Точно. Конечно, если бы это была таблица 7x7, с двумя требуемыми в каждой строке и столбце, проблема стала интересной. Как бы то ни было, тривиально. –

ответ

1

Вот выражение питона, что Бьют сил все матрицы с двумя 1s в ряд:

from itertools import * 
print len(filter(
    lambda candidate: all(imap(
    lambda index: sum(imap(lambda _: _[index], candidate)) == 2, 
    xrange(5) 
)), 
    product(set(permutations([0,0,0,1,1])), repeat=5) 
)) 
0

Посмотрите на функцию Matlab perms для вектора [0 0 0 1 1], я думаю, вы его получите.

+0

Ну, если вы выберете этот подход, то он будет уникальным (perms ([0 0 0 1 1]) , 'rows') –

+0

Да, спасибо за это дополнение! Я не думаю, что «строки» нужны, или хорошо ... это довольно тривиально в любом случае. – Fraukje

+0

Да, нужны строки, так как в противном случае уникальный вызов возвращает просто вектор [0; 1]. –

Смежные вопросы