* 問題說明 :
在歌星大獎(jiǎng)賽中,有 10 個(gè)評(píng)委為參賽的選手打分,分?jǐn)?shù)為 1~100 分。選手最后得分為:去掉一個(gè)最高分和一個(gè)最低分后其余 8 個(gè)分?jǐn)?shù)的平均值。請(qǐng)編寫一個(gè)程序?qū)崿F(xiàn)。
?
* 思考題
題目條件不變,但考慮同時(shí)對(duì)評(píng)委評(píng)分進(jìn)行裁判,即在 10 個(gè)評(píng)委中找出最公平 ( 即評(píng)分最接返平均分 ) 和最不公平 ( 即與平均分的差距最大 ) 的評(píng)委,程序應(yīng)該怎樣實(shí)現(xiàn)?
?
* 問題分析與算法設(shè)計(jì) :
這個(gè)問題的算法十分簡(jiǎn)單,但是要注意在程序中判斷最大、最小值的變量是如何賦值的。
/* * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
* All right reserved.
*
* Created on Mar 17, 2011 4:36:59 PM
*
* http://jarg.iteye.com/
*
*/
// Contributors: Jarg Yee <yeshaoting@gmail.com>
import java.io.*;
import static java.lang.Math.abs;
import java.util.ArrayList;
import java.util.List;
import static java.lang.System.out;
/*
* TODO 歌星大獎(jiǎng)賽
*/
public class SingerCompetition
{
private static final int[] VALUE = {90,91,93,94,90,99,97,92,91,95};
private static final int NUM = VALUE.length; // 評(píng)委人數(shù)
/** local params */
/** 最大分,最小分 */
private static int max = 0,min = 100;
/** 總分,平均分 */
private static int sum = 0,avg = 0;
/** 最小,最大差分 */
private static int gap1 = 100,gap2 = 0;
/* 最公平,最不公平評(píng)委(可能有多個(gè)人) */
private static List fairList = new ArrayList(),unfairList = new ArrayList();
/**
* TODO for debugging.
*/
public static void main(String[] args)
{
extremNUM(); /* 求極值分 */
evaluation(); /* 評(píng)價(jià)評(píng)委 */
}
/* 求極值分 */
public static void extremNUM()
{
for(int i=0; i<NUM; i++)
{
if(VALUE[i]>max)
max = VALUE[i];
if(VALUE[i]<min)
min = VALUE[i];
sum = sum + VALUE[i]; // 求總分
out.println("Input NUMber " + i + ":" + VALUE[i]);
}
sum = sum - max - min; // 去除最高分和最小分
avg = sum/(NUM-2);
out.println("Canceled max score:" + max);
out.println("Canceled min score:" + min);
out.println("Average score:" + avg);
}
/* 評(píng)價(jià)評(píng)委 */
public static void evaluation()
{
for(int i=0; i<NUM; i++)
{
if(abs(VALUE[i] - avg)<=gap1)
{
if(abs(VALUE[i] - avg)!=gap1)
fairList.clear();
gap1 = abs(VALUE[i] - avg);
fairList.add("" + i);
}
if(abs(VALUE[i] - avg)>=gap2)
{
if(abs(VALUE[i] - avg)!=gap2)
unfairList.clear();
gap2 = abs(VALUE[i] - avg);
unfairList.add("" + i);
}
}
out.print("Most fair judges:");
for(int i=0;i<fairList.size();i++)
out.print("\t" + fairList.get(i));
out.println();
out.print("Most unfair judges:");
for(int i=0;i<unfairList.size();i++)
out.print("\t" + unfairList.get(i));
out.println();
}
}
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

