java如何在多个点之间找到指定点的最短距离?
我已经输入了点,并找到了它们之间的距离。现在我想找出m
点之间的距离最短
import java.awt.Point;
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
public class Solution
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int k = in.nextInt();
Point[] coordinates=new Point[10];
double dist;
for(int i = 0; i < m; i++)
{
coordinates[i]=new Point(in.nextInt(),in.nextInt());
}
for(int i=0;i<m-1;i++)
{
dist=Math.sqrt(((coordinates[i+1].getX()-coordinates[i].getX())*(coordinates[i+1].getX()-coordinates[i].getX()))+((coordinates[i+1].getY()-coordinates[i].getY())*(coordinates[1].getY()-coordinates[0].getY())));
System.out.println("dist between "+coordinates[i+1].getX()+","+coordinates[i+1].getY()+"and "+coordinates[i].getX()+","+coordinates[i].getY() +" is "+dist);
}
in.close();
}
}
# 1 楼答案
你必须在另一个循环中做一个for循环,以通过每个点的所有点。第一个for循环将通过每个点。第二个循环也将通过所有点,所以在第二个循环中,你将有两个循环的任何可能组合。然后需要计算距离,并检查计算的距离是否小于之前计算的最小距离
最终,你将拥有最小的距离:
下面是一些示例代码:
如果你需要最大的距离,就用
if(distance > smallesDistance)
代替if(distance < smallesDistance)
# 2 楼答案
按照for循环的设计方式,它只需检查一个点与紧随其后读取的点。你需要2个for循环来比较每个点和所有其他点
# 3 楼答案
以下是帮助器函数:
distance
:计算两点之间的距离shortest_pair
:返回距离最短的一对代码如下:
示例如下: