Найти расстояние между двумя заданными множествами на плоскости - C#
Формулировка задачи:
Досталось такое задание:
Расстояние между двумя множествами точек – это расстояние между наиболее близко расположенными точками этих множеств. Найти расстояние между двумя заданными множествами на плоскости.
Как решить?
Решение задачи: «Найти расстояние между двумя заданными множествами на плоскости»
textual
Листинг программы
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
struct Point
{
public double X;
public double Y;
public Point(double x, double y)
{
X = x;
Y = y;
}
public override string ToString()
{
return X + ";" + Y;
}
}
static Random random = new Random();
static void Main(string[] args)
{
List<Point> A = new List<Point>();
List<Point> B = new List<Point>();
FillListWithRandomData(A, 7);
FillListWithRandomData(B, 3);
Point p1 = new Point(-1, -1), p2 = new Point(-1, -1);
double d;
double min_d = double.PositiveInfinity;
foreach (var point1 in A)
{
foreach (var point2 in B)
{
d = Math.Sqrt(Math.Pow(point1.X - point2.X, 2) + Math.Pow(point1.Y - point2.Y, 2));
if (d < min_d)
{
min_d = d;
p1 = point1;
p2 = point2;
}
}
}
PrintList(A);
PrintList(B);
Console.WriteLine("Min dist between {0} and {1} : {2}", p1, p2, min_d);
Console.ReadKey();
}
static void FillListWithRandomData(List<Point> list, int count)
{
for (int i = 0; i < count; i++)
{
list.Add(new Point(random.Next(0, 51), random.Next(0, 51)));
}
}
static void PrintList(List<Point> list)
{
Console.WriteLine(String.Join(" ", list));
}
}
}