(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] + ")"); } } }
沒有留言:
張貼留言