假设我们有一组 V1= { p0(x0,y0), p1(x1,y1),p2(x2,y2),p3(x3,y3),p4(x4,y4)}
并设置 V2= { M0(x0,y0),.........Mn(xn,yn) }
V1 中的成员数量是恒定的 [ 比如说 5 组点 }
每次调用函数 minDifference() 时,它都应该从 V2 返回一组点,其中与 V1 中的点的差值最小
在此示例中:输出应返回来自 V2 的 5 组点,这些点与 V1 中的点具有最小/最小值差异
假设我们有一组 V1= { p0(x0,y0), p1(x1,y1),p2(x2,y2),p3(x3,y3),p4(x4,y4)}
并设置 V2= { M0(x0,y0),.........Mn(xn,yn) }
V1 中的成员数量是恒定的 [ 比如说 5 组点 }
每次调用函数 minDifference() 时,它都应该从 V2 返回一组点,其中与 V1 中的点的差值最小
在此示例中:输出应返回来自 V2 的 5 组点,这些点与 V1 中的点具有最小/最小值差异
尝试这个:
List<Point> V1 = new List<Point>();
V1.Add(new Point(2, 2));
V1.Add(new Point(4, 4));
V1.Add(new Point(6, 6));
V1.Add(new Point(8, 8));
V1.Add(new Point(10, 10));
List<Point> V2 = new List<Point>();
V2.Add(new Point(1, 1));
V2.Add(new Point(3, 3));
V2.Add(new Point(5, 5));
V2.Add(new Point(7, 7));
V2.Add(new Point(9, 9));
List<Point> result = new List<Point>();
foreach (Point p1 in V1)
{
Point minPoint = Point.Empty;
double minDist = double.MaxValue;
foreach (Point p2 in V2)
{
double dist = Math.Sqrt(Math.Pow(p1.X - p2.X, 2) + Math.Pow(p1.Y - p2.Y, 2));
if (dist < minDist)
{
minDist = dist;
minPoint = p2;
}
}
result.Add(minPoint);
}
作为额外的优化,您可以放弃 ,Math.Sqrt
因为您并不需要确切的距离。