求助,20分的代码,不知道哪里的问题

P1927 防护伞

system("pause")?
by AFOed @ 2021-02-01 15:48:32


@[2416813485m](/user/314427) 当然不是这个啦,
by direven @ 2021-02-01 15:49:54


@[direven](/user/459783) 可能的原因有: 1.精度丢失 必然的原因有: 1.min的初始值设错了(不能只取$p_0$和$p_1$,应该要取$p_0$到$p_{n-1}$的$max$值) ACcode: ```cpp #include <iostream> #include <string> #include <cmath> #include <cstdio> #define PI 3.1415926535 using namespace std; class Point { public: int x; int y; }; int dis(Point p1, Point p2) { int dis = (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y); return dis; } int main() { int n; cin >> n; Point point[1000]; for (int i = 0; i < n; i++) { cin >> point[i].x >> point[i].y; } int min = 0x3f3f3f3fll ; for (int i = 0; i < n; i++) { int max = 0 ; for (int j = 0; j < n; j++) { if ( i == j ) continue ; if (dis(point[i], point[j]) >= max) { max = dis(point[i], point[j]); } } if(max<min){ min = max; } } double area = PI* (double)min; printf("%.4f",area); //system("pause"); } ```
by AFOed @ 2021-02-01 15:59:57


@[direven](/user/459783) 其实你把 ```cpp double min = dis(point[0], point[1]); ``` 改成 ```cpp double min = 9999999999 ; ``` 应该就能AC了
by AFOed @ 2021-02-01 16:01:52


@[2416813485m](/user/314427) 感谢感谢,ok了
by direven @ 2021-02-01 16:03:40


|