* 問題說明 :
在歌星大獎(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ì)您有幫助就好】元
