求两个 点集之间的最小距离c++代码实现
时间: 2024-05-01 08:17:25 浏览: 90
以下是基于蛮力求解两个点集之间的最小距离c的代码实现:
```
#include <iostream>
#include <cmath>
#include <limits>
using namespace std;
struct Point {
double x, y;
};
double dist(Point p1, Point p2) {
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
return sqrt(dx*dx + dy*dy);
}
double bruteForce(Point p[], int n) {
double minDist = numeric_limits<double>::max();
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
double d = dist(p[i], p[j]);
if (d < minDist) {
minDist = d;
}
}
}
return minDist;
}
int main() {
int n;
cin >> n;
Point p[n];
for (int i = 0; i < n; i++) {
cin >> p[i].x >> p[i].y;
}
double c = bruteForce(p, n);
cout << c << endl;
return 0;
}
```
该程序先定义了一个包含x和y坐标的“Point”结构体,然后实现了一个计算两个点之间距离的“dist”函数。接着,利用双重循环查找点集中所有点的两两距离,直到找到最小的距离,该距离即为点集之间的最小距离。该算法的时间复杂度为O(n^2),不适用于大规模的点集。
阅读全文