C# Задача о ранце 0-1 с известной суммой и количеством нулей в наборе

я имею 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 предметов.

5
задан hydroiodic 4 September 2011 в 08:32
поделиться