(点对问题)找出距离最近的点对
import java.util.*;
public class FindNearestPoint {
public static void main(String[] args){
Scanner buf=new Scanner(System.in);
System.out.println("Find Nearest Points");
System.out.println("Enter the number of points");
int number=buf.nextInt();//读取坐标的数量
double[][] points=new double[number][2];
System.out.print("Enter "+number+" points:");
for(int i=0;i<points.length;i++)
{//读取坐标
points[i][0]=buf.nextDouble();
points[i][1]=buf.nextDouble();
}
int p1=0,p2=1;
double shortestDistance=distance(points[p1][0],points[p1][1], points[p2][0],points[p2][1]);
//默认第一个坐标与第二坐标为最短距离
for(int i=0;i<points.length;i++) {
for (int j = i + 1; j < points.length; j++){//计算各个点之间的距离
double distance = distance(points[i][0], points[i][1], points[j][0], points[j][1]);
if (shortestDistance > distance) {//最短距离进行比较
p1 = i;//取第一个点x坐标
p2 = j;//取第二个点x坐标
shortestDistance=distance;
}
}
}
System.out.println("The closest two points are "+"("+points[p1][0]+","+points[p1][1]+
") and ("+points[p2][0]+","+points[p2][1]+")");
System.out.println("The shortest distance:"+shortestDistance);
}
public static double distance(double x1,double y1,double x2,double y2){//计算2个点的距离
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
}
输出
输入
8
-1 3 -1 -1 1 1 2 0.5 2 -1 3 3 4 2 4 -0.5
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)