hdu 4520 小Q系列故事——最佳裁判 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4520
1 #include <iostream> 2 #include <algorithm> 3 #include <math.h> 4 using namespace std; 5 6 int main() 7 { 8 int n, i, besti; 9 double p[30], sor[30], final, sum, min; 10 while (cin >> n && n) 11 { 12 besti = sum = 0; 13 for (i = 0; i < n; i++) 14 { 15 scanf("%lf", &p[i]); 16 sor[i] = p[i]; 17 sum += p[i]; 18 } 19 sort(p, p+n); 20 final = (sum - p[0] - p[n-1]) / (n-2); 21 min = fabs(final - sor[0]); 22 for (i = 1; i < n; i++) 23 { 24 if (min > fabs(final-sor[i])) 25 { 26 min = fabs(final-sor[i]); 27 besti = i; 28 } 29 } 30 printf("%d\n", besti+1); 31 } 32 return 0; 33 }
besti 没有赋初值,wa了无数次,一开始还以为不能用第一个数赋予min;还有一种想法是,听别人说,fabs会丢失精度.其实,最关键的是赋初值!!!!!