題目例如如下:java
比賽狀況統計ide
有一個遊戲平臺,各個參賽隊伍(以惟一的TeamID來標識)之間進行單循環的對抗賽,兩個隊伍之間僅僅舉行一場比賽,比賽以得分的多少定勝負。需要完畢一個統計賽況的程序,能夠隨時查詢指定隊伍的最新賽況:包含勝、平、負的局數,當前總積分以及名次。 oop
說明:循環賽沒有全部結束時也可以查詢某個隊伍的最新賽況this
規則說明spa
比賽斷定:兩個隊伍中得分高的一方爲勝者,還有一方爲負者;得分一樣則爲平局 code
積分規則:每一局比賽: 勝者積3分;平局兩方各積1分; 負者積0分 遊戲
排名規則:依照當前總積分的高低,名次從1開始依次進行排名。積分一樣的名次並列,出現n(n>=2)個隊伍名次並列時,則並列名次的下面n-1個名次空出ci
輸入知足例如如下規格或約束,考生程序無需檢查: get
(1)比賽隊伍總數<=1000<>string
(2)0 <= teamid<= 65535<>
(3)每個隊伍的總積分<=65535<>
(4)隊伍1對隊伍2的比賽, 隊伍2對隊伍1的比賽指同一場比賽
(5)不會反覆輸入同一場比賽的比賽結果
(6)本身和本身不比賽
循環賽的前兩場比賽結果例如如下:
|
隊伍1ID |
隊伍1得分 |
隊伍2ID |
隊伍2得分 |
比賽1 |
1 |
34 |
2 |
45 |
比賽2 |
2 |
40 |
3 |
40 |
輸入:
隊伍相互比賽信息,格式是隊伍id和得分,如1 2 34 45 ,就是ID爲1和2的兩個隊伍的比賽得分是34與45.一個隊賽況結果內的數據用空格隔開;
輸出:
以名次去排列的得分狀況,依次是
隊伍ID |
勝的場數 |
平局場數 |
負的場數 |
總積分 |
名次 |
2 |
1 |
1 |
0 |
4 |
1 |
那麼就是 211041
測試例子:
輸入:1 2 34 45 2 3 4040 1 3 35 45
輸出:1 0 0 2 0 3 2 1 10 4 1 3 1 1 0 4 1
個人程序——
package Tran0624; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Scanner; import java.util.Set; import java.util.TreeSet; public class Main { private static HashMap<Integer,Troop> list; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); String[] ssStrings = string.split(" "); //四個是一場比賽 //每一組數據,隊伍id , 得分 int n = ssStrings.length; int[] dataArray = new int[n]; list = new HashMap<Integer,Troop>(); boolean existFlag = false; for (int i = 0; i <n; i++) { dataArray[i] = Integer.parseInt(ssStrings[i]); } for (int i = 0; i < n; i++) { if ((i%4 == 0)||(i%4 == 1)) { list.put(dataArray[i],new Troop(dataArray[i] )); }else if(i%4 == 2){ if (dataArray[i]> dataArray[i+1]) { list.get(dataArray[i-2]).setWinNum( list.get(dataArray[i-2]).getWinNum()+1); list.get(dataArray[i-2]).setScores(list.get(dataArray[i-2]).scores+3); list.get(dataArray[i-1]).setFailNum(list.get(dataArray[i-1]).getFailNum()+1); }else if(dataArray[i]== dataArray[i+1]) { list.get(dataArray[i-2]).setEqualNum(list.get(dataArray[i-2]).getEqualNum()+1); list.get(dataArray[i-2]).setScores(list.get(dataArray[i-2]).scores+1); list.get(dataArray[i-1]).setEqualNum(list.get(dataArray[i-1]).getEqualNum()+1); list.get(dataArray[i-1]).setScores(list.get(dataArray[i-1]).scores+1); }else if(dataArray[i]< dataArray[i+1]) { list.get(dataArray[i-1]).setWinNum( list.get(dataArray[i-1]).getWinNum()+1); list.get(dataArray[i-1]).setScores(list.get(dataArray[i-1]).scores+3); list.get(dataArray[i-2]).setFailNum(list.get(dataArray[i-2]).getFailNum()+1); } } } Set<Integer> set = list.keySet(); Iterator<Integer> iterator = set.iterator(); ArrayList<Troop> mapArrayList = new ArrayList<Main.Troop>(); while(iterator.hasNext()){ mapArrayList.add(list.get(iterator.next())); } Collections.sort(mapArrayList); for (int j = 0; j < mapArrayList.size(); j++) { System.out.println(mapArrayList.get(j).toString()); } } public static class Troop implements Comparable<Troop>{ private int id = 0; private int winNum = 0;//勝利場數 private int equalNum = 0;//平局 private int failNum = 0;//負場數 private int scores = 0; //積分 public Troop(int id){ this.id = id; } @Override public int compareTo(Troop o) { return o.id; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getWinNum() { return winNum; } public void setWinNum(int winNum) { this.winNum = winNum; } public int getEqualNum() { return equalNum; } public void setEqualNum(int equalNum) { this.equalNum = equalNum; } public int getFailNum() { return failNum; } public void setFailNum(int failNum) { this.failNum = failNum; } public int getScores() { return scores; } public void setScores(int scores) { this.scores = scores; } @Override public String toString() { return ""+id+winNum+equalNum+failNum+scores ; //"Troop [id=" + id + ", winNum=" + winNum + ", equalNum=" // + equalNum + ", failNum=" + failNum + ", scores=" + scores // + ", rank=" + rank + "]"; } } }