Я пытаюсь сгенерировать матрицу, как для игры с перекрестными суммами, где в матрице случайных чисел для заданной суммы (или произведения, в зависимости от выбранной операции) для каждой строки и столбца,есть ровно 1 способ «деактивировать» (то есть исключить число из конечной суммы или произведения) правильные числа, чтобы каждая строка и столбец заканчивали суммированием активных чисел до правильной суммы.
Чтобы проиллюстрировать этоскажем, у меня есть матрица 3x3, и выбранные суммы (числа, следующие за *, представляют сумму):
*12* *5* *3*
4* 1 2 3 *4
9* 4 5 6 *9
7* 7 8 9 *7
Чтобы решить эту проблему, мне нужно деактивировать числа 2, 6, 9 и 8..
Один из способов сгенерировать матрицу с необходимой суммой - просто сгенерировать числа, а затем выбрать, какие из них исключить случайным образом.Однако недостатком является то, что для больших матриц, таких как 7x7, 8x8, есть вероятность того, что будет более 1 решения.
Другое решение, о котором я думаю, - исключить числа, которые можно сложитьдругой для каждой строки / столбца.Например, если требуемая сумма равна 5, то 4 2 1 3 будет недопустимым из-за (4 + 1 и 3 + 2), но это кажется довольно сложным и неэффективным.
Если у кого-либо есть какие-либо указатели, я 'Я очень ценю это.Кажется, это решенная проблема, но я понятия не имею, что искать.