题目要求给定平面上的n个点,找出其中一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的。

解题思路:

  1. 首先,可以用一个二维数组dist[][]来存储每两点之间的距离。
  2. 对于每两个点i和j,可以计算它们之间的距离,并将结果存储在dist[i][j]和dist[j][i]中。
  3. 然后,可以使用两个嵌套的循环遍历所有点对的距离,并找到最小的距离。
  4. 最后,将最小距离保留到指定的小数位数,并输出结果。

C++代码实现如下:

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

int main() {
    int n;
    cin >> n;

    int points[n][2];
    double dist[n][n];

    // 输入每个点的坐标
    for (int i = 0; i < n; i++) {
        cin >> points[i][0] >> points[i][1];
    }

    // 计算每两个点之间的距离
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            dist[i][j] = sqrt(pow(points[i][0] - points[j][0], 2) + pow(points[i][1] - points[j][1], 2));
        }
    }

    // 找到最小距离
    double minDist = dist[0][1];
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (dist[i][j] < minDist) {
                minDist = dist[i][j];
            }
        }
    }

    // 输出最小距离
    cout << fixed << setprecision(2) << minDist << endl;

    return 0;
}

该代码首先读取点的个数n,然后使用一个二维数组points存储每个点的坐标。接下来,使用两个嵌套循环计算每两个点之间的距离,并将结果存储在dist数组中。然后,使用两个嵌套循环找到最小距离,并将结果保留到指定的小数位数后输出

C++实现给定平面上 个点找出其中的一对点的距离使得在这 个点的所有点对中该距离为所有点对中最小的。输入第一行一个整数 表示点的个数。接下来 行每行两个整数 表示一个点的行坐标和列坐标。输出仅一行一个实数表示最短距离四舍五入保留 位小数。

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

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