首页 > 专题系列 > Java解POJ > POJ 3325 ICPC Score Totalizer Software [解题报告] Java
2013
11-12

POJ 3325 ICPC Score Totalizer Software [解题报告] Java

ICPC Score Totalizer Software

问题描述 :

The International Clown and Pierrot Competition (ICPC), is one of the most distinguished and also the most popular events on earth in the show business. < end en only >< begin en only >

One of the unique features of this contest is the great number of judges that sometimes counts up to one hundred. The number of judges may differ from one contestant to another, because judges with any relationship whatsoever with a specific contestant are temporarily excluded for scoring his/her performance.

< end en only >< begin en only >

Basically, scores given to a contestant’s performance by the judges are averaged to decide his/her score. To avoid letting judges with eccentric viewpoints too much influence the score, the highest and the lowest scores are set aside in this calculation. If the same highest score is marked by two or more judges, only one of them is ignored. The same is with the lowest score. The average, which may contain fractions, are truncated down to obtain final score as an integer.

< end en only >< begin en only >

You are asked to write a program that computes the scores of performances, given the scores of all the judges, to speed up the event to be suited for a TV program.

< end en only >

输入:

The input consists of a number of datasets, each corresponding to a contestant’s performance. There are no more than 20 datasets in the input.

A dataset begins with a line with an integer n, the number of judges participated in scoring the performance (3 ≤ n ≤ 100). Each of the n lines following it has an integral score s (0 ≤ s ≤ 1000) marked by a judge. No other characters except for digits to express these numbers are in the input. Judges’ names are kept secret.

The end of the input is indicated by a line with a single zero in it.

输出:

For each dataset, a line containing a single decimal integer indicating the score for the corresponding performance should be output. No other characters should be on the output line.

样例输入:

3
1000
342
0
5
2
2
9
11
932
5
300
1000
0
200
400
8
353
242
402
274
283
132
402
523
0

样例输出:

342
7
300
326

解题代码:

import java.util.*;  
 import java.text.*;  
   
 public class Main {  
   
     public static void main(String[] args) {  
         Scanner cin = new Scanner(System.in);  
           
         while(true)  
         {  
             int num = cin.nextInt();  
             if(num == 0)  
                 break;  
               
             int[] list = new int[num];  
             int max = 0;  
             int min = 1000;  
             int result = 0;  
             int tmp = 0;  
             for(int i = 0; i < num; i++)  
             {  
                 tmp = cin.nextInt();  
                 if(tmp > max)  
                     max = tmp;  
                 if(tmp < min)  
                     min = tmp;  
                 result += tmp;  
             }  
             result = (result - max - min)/(num-2);  
             DecimalFormat df = new DecimalFormat("");  
             System.out.println(df.format(result));  
         }  
   
     }  
}

  1. 我还有个问题想请教一下,就是感觉对于新手来说,递归理解起来有些困难,不知有没有什么好的方法或者什么好的建议?

  2. 算法是程序的灵魂,算法分简单和复杂,如果不搞大数据类,程序员了解一下简单点的算法也是可以的,但是会算法的一定要会编程才行,程序员不一定要会算法,利于自己项目需要的可以简单了解。