Минимальный скалярный продукт
Источником вдохновения для решения этой проблемы является гольф- конкурс Google . Причиной проблемы является, учитывая вход двух векторов различной длины, найти минимально возможный скаляр. Скаляр можно найти по следующей формуле:
x1 * y1 + x2 * y2 + ... + xn * yn
Проблема, однако, заключается в том, что можно найти несколько значений для скаляра в зависимости от порядка чисел во входном регистре (см. Ниже). Ваша цель состоит в том, чтобы определить минимально возможное скалярное целочисленное решение, вставив входные числа наблюдений в уравнение и найдя для него решение. Вы можете использовать каждое число на входе только один раз, и должны использовать все числа.
Позвольте мне привести пример со следующими векторами.
вход
3
1 3 -5
-2 4 1
Выход
-25
Первое целое число в строке представляет количество чисел n в каждом векторе. В этом случае у нас есть три числа в каждом векторе.
Число n может варьироваться в зависимости от каждого теста, но всегда будет два вектора.
В приведенном примере минимальное скалярное произведение будет равно -25.
(-5 * 4) + (1 * 1) + (3 * -2) = 25
правила
- Вы можете использовать каждое целое число в обоих векторах только один раз.
- Вы должны использовать все целые числа в векторах.
- Ваш вывод должен включать только конечный продукт
- Я выберу решение с наименьшим количеством кода, которое соответствует всем перечисленным выше спецификациям, на любом языке!
Подсказка: вам не нужно грубо форсировать эту проблему, если она не делает ваш код короче. Существует определенный метод поиска минимального охватывающего скаляра :).