Помогите с решением. Ничего в голову не лезет
Напишите программу, которая вычисляет минимальное расстояние, которое потребуется пройти Роману, чтобы посетить оба магазина и вернуться домой. Роман всегда стартует из дома. Он должен посетить оба магазина, перемещаясь только по имеющимся трём дорожкам, и вернуться назад домой. При этом его совершенно не смутит, если ему придётся посетить один и тот же магазин или пройти по одной и той же дорожке более одного раза. Единственная его задача — минимизировать суммарное пройденное расстояние.
Формат входных данных
На вход программе подаются 33 натуральных числа d_1, d_2, d_3d
d1 длина дорожки, соединяющая дом Романа и первый магазин;
d2 длина дорожки, соединяющая дом Романа и второй магазин;
d3 длина дорожки, соединяющая магазины.
Формат выходных данных
Программа должна вывести минимальное количество метров, которое придётся пройти Роману, чтобы посетить оба магазина и вернуться домой.
Answers & Comments
Программа:
Python:
d_1, d_2, d_3 = map(int, input().split())
print(min(min(2*(d_1 + d_2), min(2*(d_1 + d_3), 2*(d_2 + d_3))), d_1 + d_2 + d_3))
Объяснение:
В начале вводятся три числа в одну строку через пробел. Далее для расчёта включаем логику. Если нужно минимизировать расстояние, то используем метод min(), который есть в Python. Начинаем логически думать, какие оптимальные варианты для хождений Романа возможны. Он может пройтись сначала как два раза по первой дороге, так и два раза по третьей; либо же два раза по второй и два по третьей. Находится минимум этих дорог, после чего сравнивается с тем, если два раза пройдёт по каждой из d_1 и d_2. И минимальное уже из этих чисел сравнивается с тем, если Роман пройдёт по каждой из дорог d_1, d_2, d_3 по одному разу (сумма длин этих дорог).
Результат:
10 15 20
45
5 5 2
12
1 5 1
4
60 60 70
190