я имею 5x5 таблица значений от 0 до 3 включительно со всеми неизвестными значениями. Я знаю и сумму значений и количество нулей для каждой строки и столбца. Как я пошел бы о решении этой задачи о ранце 0-1 с помощью C# и получив возможные решения, которые удовлетворяют известные суммы и количество нулей? Таблицы всегда будут пятью строками и пять столбцов, таким образом, это будет не совсем традиционный ранец.
, Например, скажите, что мы вводим:
Row[0]: Sum=4, Zeros=1
[1]: Sum=5, Zeros=1
[2]: Sum=4, Zeros=2
[3]: Sum=8, Zeros=0
[4]: Sum=3, Zeros=2
Col[0]: Sum=5, Zeros=1
[1]: Sum=3, Zeros=2
[2]: Sum=4, Zeros=2
[3]: Sum=5, Zeros=1
[4]: Sum=7, Zeros=0
Мы получили бы это как возможное решение:
[[ 0 1 1 1 1 ]
[ 1 0 2 1 1 ]
[ 2 1 0 0 1 ]
[ 1 1 1 2 3 ]
[ 1 0 0 1 1 ]]
, Какой алгоритм я должен использовать в этой довольно странной ситуации? Я должен был бы также записать класс только для перечисления перестановок?
Редактирование для разъяснения: проблема не состоит в том, что я не могу перечислить возможности; это - это, у меня нет подсказки, как пойти об эффективном определении перестановок, добавляющих к произвольной сумме в то время как содержащий конкретное количество нулей и максимум 5 предметов.