Это -
задача коммивояжера, решается перебором.
Вот тебе решение на питоне, на паскале ты уж как-нибудь сам )
from math import hypot
# тестовые варианты наборов точек
points = [(3, 4), (7, 7)]
points = [(3, 0), (3, 4), (6, 4)]
points = [(1, 0), (1, 8), (0, 8)]
INF = 1e20 # будем считать, что это - бесконечность
def f(startx, starty):
res = INF
for i, (x, y) in enumerate(points):
if x >= 0:
points[i] = (-1, -1) # подменяю использованую точку на фиктивную
t = hypot(startx - x, starty - y) + f(x, y) # вот рекурсия, как обещал
if res > t:
res = t
points[i] = (x, y) # восстанавливаю точку
if res == INF: # не нашлось ни одной неиспользованой точки
res = 0
return res
print(f(0, 0)) # стартую из начала координат