(a)找出點之間的最短座標。
(b)找出是那些點之間的最短距離。
例如:
輸入: 輸出:
輸入座標點數:3 最短距離:2.00
依序輸入3個座標x、y: 那些點之間距離最短:
0 3 (1,0);(3,0)
1 0
3 0
import java.util.Scanner;
public class C1
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
//提示使用者輸入並創建array
System.out.println("請輸入座標點數:");
int number = input.nextInt();
int[][] a = new int[number][2];
System.out.println("請輸入座標:");//提示使用者輸入並將座標輸入至array中
for(int i = 0 ; i < a.length ; i++ )
{
for(int j = 0 ; j< a[0].length ; j++ )
{
a[i][j] = input.nextInt();
}
}
double min = Math.pow( ( (a[0][0] - a[1][0]) * (a[0][0] - a[1][0]) ) + ( (a[0][1] - a[1][1]) * (a[0][1] - a[1][1]) ) , 0.5 ) ;
//將最小值預設為第一個點和第二個點的距離
int[][] b = new int [number][4] ; // 預設一個裝最小距離點座標的array
int k = 0;
for(int i = 0 ; i < a.length - 1 ; i++ )//計算最小距離
{
for(int j = i + 1 ; j < a.length ; j++ )
{
int x1 = a[i][0];
int y1 = a[i][1];
int x2 = a[j][0];
int y2 = a[j][1];
double length = Math.pow( ( (x1 - x2) * (x1 - x2) ) + ( (y1 - y2) * (y1 - y2) ) , 0.5 ) ;
if(length == min )
{
b[k][0] = x1; b[k][1] = y1; b[k][2] = x2; b[k][3] = y2 ;
k++;
}
if(length < min)
{
k = 0; min = length;
b[k][0] = x1; b[k][1] = y1; b[k][2] = x2; b[k][3] = y2 ;
k++;
}
}
}
//輸出結果
System.out.println("最短距離:" + min);
System.out.println("那些點之間距離最短:");
for(int i = 0 ; i < k ; i++)
{
System.out.println("(" + b[i][0] + "," + b[i][1] + ") ; (" + b[i][2] + "," + b[i][3] + ")");
}
}
}
沒有留言:
張貼留言