Это скорее алгоритмическая/математическая проблема, но я надеюсь реализовать решение на С++.
Предположим, что у меня есть такая матрица, где точки представляют целые числа:
W X Y Z
A . . . .
B . . . .
C . . . .
D . . . .
Как бы я дал минимальный результат, если мне нужно было выбрать один номер из каждого столбца, чтобы было не более одного номера из каждой строки?
Например, я мог бы выбрать AW BX CY DZ
или AZ BX CY DW
, но NOT AW BW CZ DZ
Подход грубой силы, казалось бы, займет n! расчеты. Есть ли более быстрый путь? В конце концов я хотел бы добавить числа в матрицах размером ~ 60.
Кроме того, все числа варьируются от 0 до 256.