華爲OJ培訓主題 比賽統計

題目例如如下: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 + "]";
		}
		
		
		
	}

}
相關文章
相關標籤/搜索