Информатика, вопрос задал pokpupok1234 , 6 лет назад

Помогите с решением. Ничего в голову не лезет

Напишите программу, которая вычисляет минимальное расстояние, которое потребуется пройти Роману, чтобы посетить оба магазина и вернуться домой. Роман всегда стартует из дома. Он должен посетить оба магазина, перемещаясь только по имеющимся трём дорожкам, и вернуться назад домой. При этом его совершенно не смутит, если ему придётся посетить один и тот же магазин или пройти по одной и той же дорожке более одного раза. Единственная его задача — минимизировать суммарное пройденное расстояние.

Формат входных данных
На вход программе подаются 33 натуральных числа d_1, d_2, d_3d
​d1 длина дорожки, соединяющая дом Романа и первый магазин;
d2 длина дорожки, соединяющая дом Романа и второй магазин;
d3 длина дорожки, соединяющая магазины.
Формат выходных данных
Программа должна вывести минимальное количество метров, которое придётся пройти Роману, чтобы посетить оба магазина и вернуться домой.


mathgenius: Ну
mathgenius: это стандартная задачка на графы, в сети можно кучу примеров найти

Ответы на вопрос

Ответил vimmortal2
0

Программа:
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

Новые вопросы