C++实现给定平面上 个点找出其中的一对点的距离使得在这 个点的所有点对中该距离为所有点对中最小的。输入第一行一个整数 表示点的个数。接下来 行每行两个整数 表示一个点的行坐标和列坐标。输出仅一行一个实数表示最短距离四舍五入保留 位小数。内存限制:256 MB
首先,我们可以使用一个二维数组points来存储所有的点的坐标。points[i][0]表示第i个点的行坐标,points[i][1]表示第i个点的列坐标。
然后,我们可以使用两层循环遍历所有的点对,计算每对点之间的距离,并将最小的距离存储在变量minDist中。
具体的实现代码如下:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n;
// 二维数组存储点的坐标
int points[n][2];
for (int i = 0; i < n; i++) {
cin >> points[i][0] >> points[i][1];
}
double minDist = 1e9; // 初始化最小距离为一个较大的值
// 遍历所有的点对,计算距离并更新最小距离
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
double dist = sqrt(pow(points[i][0] - points[j][0], 2) + pow(points[i][1] - points[j][1], 2));
if (dist < minDist) {
minDist = dist;
}
}
}
// 输出最短距离,保留两位小数
cout << fixed << setprecision(2) << minDist << endl;
return 0;
}
该代码的时间复杂度为O(n^2),其中n表示点的个数
原文地址: https://www.cveoy.top/t/topic/hSYV 著作权归作者所有。请勿转载和采集!