问题 A: 班级排名

来源:互联网 发布:javascript的数据类型 编辑:程序博客网 时间:2024/06/12 00:58

题目描述

达达在陶陶的影响下,也对学习慢慢的产生了兴趣。
他在每次考试之后,都会追着老师问,自己在班级的总名次是多少。考试一多,老师也不耐烦了,于是他给了达达所有人的成绩,让他自己去算出自己的排名。
可人太多了,达达也无法立即算出来,于是他想让你帮帮他。

输入

第一行为一个整数N,代表班级的学生总数。
接下来N行,每行一个字符串,代表一个学生的姓名,第一行总是DaDa
接下来一行一个整数M,代表一共有M次考试。
每次考试有N行,每行有以一个空格分隔的一个正整数S和一个字符串P,代表名字为P的学生在这次考试中得了S分。

输出

一共M行,每行一个整数,代表达达在班级里的排名,排名是这一次考试过后的所有考试总分排名,如果达达和别人并列,达达总是排在前面。

样例输入

3DaDaAB249 DaDa49 A48 B80 A85 B83 DaDa

样例输出

1

2

import java.util.*;public class Main {    static  Scanner in=new Scanner(System.in);   public static void main(String[] args) {          while(in.hasNext()){          int k=in.nextInt();          Map<String, Integer> m=new TreeMap<String, Integer>();           String[] score=new String[k];          for (int i = 0; i < k; i++) {m.put(in.next(), 0);  }          int tst=in.nextInt();          for (int i = 0; i < tst; i++) {int s,rank=k+1,q=0;String p;for (int j = 0; j <k; j++) {s=in.nextInt();p=in.next();    score[j]=p;q=m.get(p); q+=s;m.put(p,q);  }q=m.get("DaDa");for (int j = 0; j <k; j++) {   if(q>=m.get(score[j]))   rank--; }     System.out.println(rank); }          }                }        } 

注意map集合空指针问题,题目要求也很重要,是所有考试,而非这一次考试,计算排名的方法是,打擂台思想

原创粉丝点击