设为首页 加入收藏

TOP

华为OJ训练题之 比赛情况统计
2015-07-24 05:39:51 来源: 作者: 【 】 浏览:5
Tags:华为 训练 比赛 情况 统计

题目如下:

比赛情况统计

有一个游戏平台,各个参赛队伍(以唯一的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
  
    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
   
    (); boolean existFlag = false; for (int i = 0; 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
     
       set = list.keySet(); Iterator
      
        iterator = set.iterator(); ArrayList
       
         mapArrayList = new ArrayList
        
         (); 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
         
          { 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 + "]"; } } }
         
        
       
      
     
    
   
  





】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA - 812 Trade on Verweggistan 下一篇poj 4044 Score Sequence(暴力)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: