Предположим, что существует n очередей положительных чисел. Мне нужна минимальная сумма k чисел, выбранных из этих очередей. Обратите внимание, что это очереди, поэтому упорядочение важно, и только один номер может быть выбран из любой очереди за раз. Как только это число будет выбрано и удалено из очереди, мы можем перейти к следующей очереди в этой очереди. Поэтому сортировка не допускается (порядок важен).Алгоритм: Найти минимальную сумму k чисел из n массивов (очередей)
Например:
Найти минимальную сумму двух чисел
2 12 3 4
8 2 2
10 10
В приведенном выше примере можно выбрать либо 2 из первой очереди и 8 со второго или 8 и 2 и от второго. Оба варианта дают сумму 10.
Пример 2:
Найти минимальную сумму двух чисел
4 15 2
8 2 2
10 10
В приведенном выше примере один должен выбрать 8 и 2 как из второго списка.
Я сначала думал о линии сортировки списков слияния K, но это не сработает. Я могу думать только об одном рабочем подходе. Он должен попробовать все комбинации из всех очередей. Может кто-нибудь предложить лучший способ или направить меня к нему?
Является ли это правильно, что все выбранные номера должны быть разными? То есть нельзя выбрать 2 раза два. –
Нет, элементы могут быть повторены. Так что 2 можно выбрать два раза. – Pukki
Но вы говорите: «нужно выбрать 8 и 2 из второго списка». - Я вижу, что 2 повторяется 3 раза во втором примере. Почему он не может быть выбран дважды, давая сумму 4? –