* 問題說明 :
在歌星大獎賽中,有 10 個評委為參賽的選手打分,分數為 1~100 分。選手最后得分為:去掉一個最高分和一個最低分后其余 8 個分數的平均值。請編寫一個程序實現。
?
* 思考題
題目條件不變,但考慮同時對評委評分進行裁判,即在 10 個評委中找出最公平 ( 即評分最接返平均分 ) 和最不公平 ( 即與平均分的差距最大 ) 的評委,程序應該怎樣實現?
?
* 問題分析與算法設計 :
這個問題的算法十分簡單,但是要注意在程序中判斷最大、最小值的變量是如何賦值的。
/* * 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 歌星大獎賽 */ 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; // 評委人數 /** local params */ /** 最大分,最小分 */ private static int max = 0,min = 100; /** 總分,平均分 */ private static int sum = 0,avg = 0; /** 最小,最大差分 */ private static int gap1 = 100,gap2 = 0; /* 最公平,最不公平評委(可能有多個人) */ private static List fairList = new ArrayList(),unfairList = new ArrayList(); /** * TODO for debugging. */ public static void main(String[] args) { extremNUM(); /* 求極值分 */ evaluation(); /* 評價評委 */ } /* 求極值分 */ 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); } /* 評價評委 */ 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(); } }?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
