На плоскости заданы 2n точек. Объединить их в пары так, чтобы сумма всех расстояний между точками была миниальной - C (СИ)
Формулировка задачи:
На плоскости заданы 2n точек. Объединить их в пары так, чтобы сумма всех расстояний между точками была миниальной.
Была такая идея алгоритма:
Считаем сумму расстояний от каждой точки до всех остальных. Берем максимум из этих чисел, узнаем, к какой точке это относится, находим для этой точки ближайшую, соединяем их в пару. Далее берем сумму расстояний поменьше и проделываем то же самое. Иногда возникает проблема, что на одну точку приходится по несколько "ближайших".
Кто что может подсказать или написать сам код, если есть возможность?
Решение задачи: «На плоскости заданы 2n точек. Объединить их в пары так, чтобы сумма всех расстояний между точками была миниальной»
textual
Листинг программы
const unsigned N = 8;
Point P[N] = {
point(1.0, 9.0),
point(1.0, 10.0),
point(2.0, 9.0),
point(2.0, 10.0),
point(9.0, 1.0),
point(9.0, 2.0),
point(10.0, 1.0),
point(10.0, 2.0)
};