#mxdx001. 最近的两个点
最近的两个点
mxdx001. 最近的两个点
题目描述
给定平面上的 个点。请设计一个表示点的类,使每个点对象封装自己的坐标,并提供一个成员函数,用于计算当前点与另一个点之间的欧几里得距离。类的名称、成员变量和公开接口均由解答自行设计。
请计算所有不同点对之间距离的最小值。
提交一个完整的 C++20 程序,并自行编写 main 处理标准输入和标准输出。
距离计算应遵循公式:
用于计算距离的成员函数只负责返回计算结果,不输出任何内容;其名称、参数形式和返回类型由解答自行设计。
输入格式
第一行包含一个整数 ,表示点的数量。
接下来 行,每行包含两个整数 和 ,表示第 个点的坐标。
输出格式
输出一行一个实数,表示任意两个不同点之间最小的欧几里得距离,四舍五入后保留 位小数。
数据范围
- 点的编号不同即可视为不同的点;两个点可以拥有完全相同的坐标
本题不考察算法优化,直接枚举所有点对即可通过。
示例 1
3
0 0
3 4
3 0
3.000
三对点之间的距离分别为 、 和 ,因此最小距离为 。
示例 2
4
-1 -1
5 5
2 2
-1 -1
0.000
第 个点和第 个点的坐标相同,因此它们之间的距离为 。
说明
- 本题允许使用
std::hypot或根据距离公式自行计算。 - 坐标差的平方应使用足够宽的整数类型计算,避免
int溢出。 - 任意两个不同编号的点都可以组成点对。