a583 - 1. 座位距離計算問題
題目描述
題目要求計算給定平面上若干個點中,任意兩點之間距離的最小值。輸入包含座位數 N 和學生數 m,以及每個學生的座標 (x, y)。輸出最近兩個學生之間的歐幾里得距離,精確到小數點後四位。
解題思路
此題採用暴力解法。首先讀取學生數量和每個學生的座標,儲存在一個二維陣列中。然後,使用兩層迴圈遍歷所有可能的學生配對,計算它們之間的歐幾里得距離。在計算過程中,記錄下最小距離,最後輸出最小距離。
複雜度分析
- 時間複雜度: O(m^2),其中 m 是學生數量。因為需要遍歷所有可能的學生配對。
- 空間複雜度: O(m),其中 m 是學生數量。因為需要儲存所有學生的座標。
程式碼
#include <stdio.h>
#include <math.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
float c[b][2]={0},min=10000;
for(int i=0;i<b;i++){
scanf("%f%f",&c[i][0],&c[i][1]);
}
for(int i=0;i<b;i++){
for(int j=i+1;j<b;j++){
float n=sqrt((c[i][0]-c[j][0])*(c[i][0]-c[j][0])+(c[i][1]-c[j][1])*(c[i][1]-c[j][1]));
if(n<min){
min=n;
}
}
}
printf("%.4f",min);
}