注意:對國家進行排序時,只對要求的國家進行排序就好了 java
/** * 文件名:Main.java * * 版本信息: * 日期:2013-6-26 * Copyright Corporation 2013 * 版權全部 * */ package 題目1007; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * * 項目名稱:arithmetic * 類名稱:Main * 類描述: * 建立人:黃傳聰 * 建立時間:2013-6-26 下午12:49:28 * 修改人:黃傳聰 * 修改時間:2013-6-26 下午12:49:28 * 修改備註: * @version * */ public class Main { private double goldNum; //金牌數 private double medal; //獎牌數 private double persons; //人口數 private double gp; // 金牌人口比例 private double mp; //獎牌人口比例 private int min0; //最小排名 private int min1; //最小排名 private int min2; //最小排名 private int min3; //最小排名 private int method0; //使得排名最小的排名方式 private int method1; //使得排名最小的排名方式 private int method2; //使得排名最小的排名方式 private int method3; //使得排名最小的排名方式 private int id; public Main(){ this.min0 = 1; this.min1 = 1; this.min2 = 1; this.min3 = 1; } public static void main(String[] args) { // TODO Auto-generated method stub int countries ; int sortNum; List<Main> country = null; Scanner scanner = new Scanner(System.in); Main main = null; while(scanner.hasNext()){ countries = scanner.nextInt(); if(countries == 0){ break; } sortNum = scanner.nextInt(); int[] sortArrays = new int[sortNum]; country = new ArrayList<Main>(); int i,j; for(i=0;i<countries;i++){ main = new Main(); main.goldNum = scanner.nextInt(); main.medal = scanner.nextInt(); main.persons = scanner.nextInt(); main.gp = main.goldNum / main.persons; main.mp = main.medal / main.persons; main.id = i; country.add(main); } for(i=0;i<sortNum;i++){ sortArrays[i] = scanner.nextInt(); } sort(country,sortArrays); } } public static void sort(List<Main> list, int[] sortArray){ int i,j; List<Main> tempList = new ArrayList<Main>(); // 提出sortArray中不包含的國家 for(i=0;i<sortArray.length;i++){ for(j=0;j<list.size();j++){ if(list.get(j).id == sortArray[i]){ tempList.add(list.get(j)); } } } // 分別使用四種方式進行排名 // 按照金牌總數排名 for(i=0;i<tempList.size();i++){ Main temp = tempList.get(i); temp.method0 = 1; for(j=0;j<tempList.size();j++){ if(temp.goldNum < tempList.get(j).goldNum){ temp.min0++; } } } // 使用第二種方法 for(i=0;i<tempList.size();i++){ Main temp = tempList.get(i); temp.method1 = 2; for(j=0;j<tempList.size();j++){ if(temp.medal < tempList.get(j).medal){ temp.min1 ++; } } } for(i=0;i<tempList.size();i++){ Main temp = tempList.get(i); temp.method2 = 3; for(j=0;j<tempList.size();j++){ if(temp.gp < tempList.get(j).gp){ temp.min2++; } } } for(i=0;i<tempList.size();i++){ Main temp = tempList.get(i); temp.method3 = 4; for(j=0;j<tempList.size();j++){ if(temp.mp < tempList.get(j).mp){ temp.min3++; } } } // for(i=0;i<tempList.size();i++){ // System.out.println(tempList.get(i).min0 + " " + tempList.get(i).min1 + " " + tempList.get(i).min2 + " " + tempList.get(i).min3); // } for(i=0;i<sortArray.length;i++){ Main main = tempList.get(i); int a0 = main.min0; int a1 = main.min1; int a2 = main.min2; int a3 = main.min3; int min1 = -1,min2 = -1,min = -1; if(a0<=a1){ min1 = a0; }else{ min1 = a1; } if(a2<=a3){ min2 = a2; }else{ min2 = a3; } if(min1<=min2){ min = min1; }else{ min = min2; } if(min == a0){ System.out.println(a0 + ":" + main.method0); }else if(min == a1){ System.out.println(a1 + ":" + main.method1); }else if(min == a2){ System.out.println(a2 + ":" + main.method2); }else if(min == a3){ System.out.println(a3 + ":" + main.method3); } } System.out.println(); } }