721
技術社區[雲棲]
2011藍橋杯【初賽試題】歌賽新規則
歌賽新規則
歌手大賽的評分規則一般是去掉一個最高分,去掉一個最低分,剩下的分數求平均。當評委較少的時候,如果我們隻允許去掉一個分數,該如何設計規則呢?
有人提出:應該去掉與其餘的分數平均值相差最遠的那個分數。即“最離群”的分數。
以下的程序用於實現這個功能。其中x存放所有評分,n表示數組中元素的個數。函數返回最“離群”的那個分數值。請補全缺失的代碼。
double score(double x[], int n) { int i,j; double dif = -1; double bad; for(i=0; i<n; i++) { double sum = 0; for(j=0; j<n; j++) { if(j!=i) sum += x[j];//除了要檢測的那個分數不加外,其他分數計算總和 } double t = x[i] - sum / (n-1);//看看要檢測的那個分數與剩下的所有的分數的平均值的差距 if(t<0) t = -t;//不要負數 if(t>dif)//如果大於上一次的幾率,更新最大差距 { dif = t; bad = x[i];//記錄最壞數 printf("%d, %f\n", i, x[i]); } } return bad; }
最後更新:2017-04-03 12:55:33