hdu 4520 小Q系列故事——最佳裁判 解题报告

本文提供了一道来自HDU在线评测系统的编程题解答过程。该题目要求从一组数值中找到最接近平均值(排除最大最小值后的平均值)的数的位置。代码使用C++实现,通过排序和计算平均值得到结果。注意变量初始化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接: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会丢失精度.其实,最关键的是赋初值!!!!!

转载于:https://www.cnblogs.com/windysai/archive/2013/05/17/3083198.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值