首先,我们可以使用一个二维数组 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 表示点的个数。

C++ 最短距离算法 - 找出平面上两点之间的最小距离

原文地址: https://www.cveoy.top/t/topic/pB5k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录