使用java和暴力法写出代码,解以下问题设 p1 = ( x1 , y1 ) , p2 = ( x2 , y2 ) , ⋯, pn = ( xn , yn )是平面上 n 个点构成的集合 S ,设计算 法找出集合 S 中距离最近的点对。
时间: 2024-01-17 11:04:54 浏览: 130
平面上n个点之间最近点对问题
好的,以下是使用暴力法解决该问题的 Java 代码:
```java
import java.util.*;
import java.lang.*;
import java.io.*;
class Point {
public int x;
public int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
class ClosestPair {
public static double distance(Point p1, Point p2) {
int dx = p1.x - p2.x;
int dy = p1.y - p2.y;
return Math.sqrt(dx * dx + dy * dy);
}
public static double closestPair(List<Point> points) {
int n = points.size();
double minDist = Double.POSITIVE_INFINITY;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
double dist = distance(points.get(i), points.get(j));
if (dist < minDist) {
minDist = dist;
}
}
}
return minDist;
}
}
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
List<Point> points = new ArrayList<>();
for (int i = 0; i < n; i++) {
int x = scanner.nextInt();
int y = scanner.nextInt();
points.add(new Point(x, y));
}
double minDist = ClosestPair.closestPair(points);
System.out.println(minDist);
}
}
```
代码中的 `Point` 类表示平面上的一个点,`ClosestPair` 类包含了计算两个点之间距离的函数 `distance` 和找到最近点对的函数 `closestPair`。`Main` 类读入输入数据,并调用 `closestPair` 函数来计算最近点对的距离。
阅读全文