Имейте немного ореха, чтобы взломать. У меня есть грубая реализация алгоритма, которая не так уж сложна, но, очевидно, я хочу что-то более эффективное.
Проблема заключается в следующем:
Представьте, что у вас есть n массивов, каждый из которых заполнен значениями от 1 до n. Мне нужно определить, можно ли выбрать один элемент из каждого из этих массивов, чтобы я выбрал каждый элемент от 1 до n ровно один раз. Небольшой пример: предположим, что n = 4
и у нас есть эти n
массивов:
[1,2,3,4]
[1,3]
[2,4]
[3,4]
Эта комбинация массивов будет соответствовать алгоритму, поскольку можно (например) выбрать 1, 3, 2, 4 из каждого массива соответственно. Другая возможность будет 2, 1, 4, 3. Контрпримером будет:
[1,2,3]
[3]
[3,4]
[3,4]
Здесь вы ясно видите, что эти входные массивы не проходят алгоритм. Невозможно выбрать 1 элемент из каждого массива таким образом, чтобы каждый элемент был выбран один раз.
Как я уже говорил, метод грубой силы не так уж и сложен, но я хочу что-то более эффективное, не пройдя все возможные перестановки, пока не найду тот, который соответствует критериям.