У меня есть матрица A
:
[ [0, 1, 0]
[6, 0, 20]
[0, 0, 0]
[1, 11, 0] ]
И список B
:
[12, 34, 25, 9]
Я хочу перебрать все возможные перестановки, которые присваивают элементы в B
на позиции в A
со значением 0
.
Все ненулевые элементы в A
должны оставаться на своих исходных позициях.
Количество ячеек с нулевым значением в A
никогда не будет меньше размера B
. B
содержит только ненулевые элементы.
Считать каждый элемент в B
уникальным, , но не обязательно отдельным . Поэтому, если два элемента в B
равны, по-прежнему рассматривайте два как отдельные элементы, которые должны появиться в A
. Не имеет значения, присутствует ли элемент k
в B
уже в A
; каждая перестановка должна помещать k
в некоторую нулевую позицию внутри A
.
Итак, я хотел бы перебрать эти 2D-массивы:
[ [12, 1, 34]
[6, 25, 20]
[9, 0, 0]
[1, 11, 0] ],
[ [12, 1, 34]
[6, 25, 20]
[0, 9, 0]
[1, 11, 0] ],
.
.
(many permutations later)
.
.
[ [0, 1, 0]
[6, 0, 20]
[12, 34, 25]
[1, 11, 9] ]
Генератор обязательно должен включать все 2D-массивы, которые НЕ поддерживают исходный порядок списка B
мажорная строка мудрый.