Был теплый летний вечер ...
когда моя глупая машина решила сломаться посреди дороги по дороге обратно из супермаркета. Я отодвинул его в сторону и решил идти домой. Я открыл сундук, чтобы достать продуктовый магазин и оставшиеся вещи. Тогда я заметил, что предметы не были равномерно упакованы. В некоторых сумках были более тяжелые вещи, в то время как в других было мало более легких вещей - в некоторых даже было несколько таких вещей. Чтобы мне было легче переносить, я решил сгруппировать все в две сумки и сделать их веса как можно ближе друг к другу.
Твоя цель
состоит в том, чтобы помочь мне переставить предметы в две хозяйственные сумки таким образом, чтобы разница между обеими сумками была близка к нулю, насколько это возможно.
Математически:
ВЕС ЛЕВАЯ РУКА - ВЕС ВПРАВО РУКА ≈ 0
пример
Если у меня было только 2 предмета - хлеб и арахисовое масло, а вес хлеба - 250 грамм, а арахисового масла - 150 грамм, то лучше всего переносить их отдельно двумя руками.
W LH - W RH = W (ХЛЕБ) - W (P.BUTTER)
250 - 150 = 100
Другая возможность:
W (ХЛЕБ, P.BUTTER) - W (пустая рука) = (250 + 150) - 0 = 400
Это не лучше, чем в нашем первом случае, поэтому вы должны пойти с первым.
Ваш код должен
- введите числа, указывающие на вес предметов в корзине. Единицы измерения не важны, но они должны быть одинаковыми (в идеале килограммы или граммы). Ввод может быть сделан один за другим или все сразу. Вы можете ограничить общее количество до 20 пунктов, если хотите.
- Формат ввода / тип зависит от вас, но ничего другого не должно быть, кроме весов.
- Разрешен любой язык, но придерживайтесь стандартных библиотек.
- Вывод на дисплей. Опять же, вы можете выбрать формат, но объясните формат в своем посте. то есть, как мы можем сказать, какие из них являются левосторонними, а какие - правосторонними.
Точки
- Самый короткий код выигрывает.
намек
Два возможных алгоритма, о которых я мог подумать, - это дифференцирование (быстрее) и перестановки / комбинации (медленнее). Вы можете использовать эти или любые другие алгоритмы, которые делают эту работу.