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