答案没问题,但是杭电oj一直显示我超时,估计是希望我能使用分治法解决问题,好难呀,不会呀,先记录一下暴力解的方法吧。
#include <iostream>
#include <iomanip>
#include <vector>
#include <cmath>
using namespace std;
double getDistance(const pair<double, double>& p1, const pair<double, double>& p2) {
double dx = p1.first - p2.first;
double dy = p1.second - p2.second;
return sqrt(dx * dx + dy * dy);
}
int main() {
int n;
while (cin >> n && n != 0) {
if (n == 1) {
cout << fixed << setprecision(2) << 0 << endl;
return 0;
}
vector<pair<double, double>> toys(n);
for (int i = 0; i < n; i++) {
cin>> toys[i].first >> toys[i].second;
}
double minDistance=1e9;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
double res = getDistance(toys[i], toys[j]);
if (res < minDistance) {
minDistance = res;
}
}
}
cout <<fixed <<setprecision(2)<< minDistance/2 << endl;
}
return 0;
}