閱讀721 返回首頁    go 技術社區[雲棲]


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

  上一篇:go 機房收費係統-狀態圖與活動圖
  下一篇:go C# 怎麼檢測string字符串中有哪些數字?