zoukankan      html  css  js  c++  java
  • 华为OJ培训主题 比赛统计

    题目例如以下:

    比赛情况统计

    有一个游戏平台,各个參赛队伍(以唯一的TeamID来标识)之间进行单循环的对抗赛,两个队伍之间仅仅举行一场比赛,比赛以得分的多少定胜负。须要完毕一个统计赛况的程序,可以随时查询指定队伍的最新赛况:包含胜、平、负的局数,当前总积分以及名次。 

    说明:循环赛没有所有结束时也能够查询某个队伍的最新赛况

     

    规则说明

    比赛判定:两个队伍中得分高的一方为胜者,还有一方为负者;得分同样则为平局 

    积分规则:每一局比赛: 胜者积3分;平局两方各积1分; 负者积0分 

    排名规则:依照当前总积分的高低,名次从1開始依次进行排名。积分同样的名次并列,出现n(n>=2)个队伍名次并列时,则并列名次的下面n-1个名次空出

    输入满足例如以下规格或约束,考生程序无需检查: 

    (1)比赛队伍总数<=1000<>

    (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 + "]";
    		}
    		
    		
    		
    	}
    
    }





  • 相关阅读:
    小总结
    使用Bind提供域名解析服务(正向解析)
    在虚拟机上的NFS网络文件系统
    在虚拟机上的FTP FTP访问模式(虚拟用户模式)
    在虚拟机上的FTP FTP访问模式(本地用户模式)
    在虚拟机上的FTP,FTP访问模式(匿名)
    在虚拟机上的关于Apache(阿帕奇)(5)基于端口访问网站
    在虚拟机上的关于Apache(阿帕奇)(4)基于域名访问网站
    在虚拟机上的关于Apache(阿帕奇)(3)基于IP访问网站
    在虚拟机上的关于Apache(阿帕奇)(2)开启个人用户主页功能
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4558931.html
Copyright © 2011-2022 走看看