生日相同

来源:互联网 发布:dnf决战人工智能6.2 编辑:程序博客网 时间:2024/05/16 10:48

                                                               生日相同

时间限制:
1000ms
内存限制:
65536kB
描述
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。
输入
第一行为整数n,表示有n个学生,n<100。
此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度小于10)和出生月(1<=m<=12)日(1<=d<=31)。
学号、月、日之间用一个空格分隔。
输出
对每组生日相同的学生,输出一行,
其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。
对所有的输出,要求按日期从前到后的顺序输出。
对生日相同的学号,按输入的顺序输出。
样例输入
500508192 3 200508153 4 500508172 3 200508023 4 500509122 4 5
样例输出
3 2 00508192 005081724 5 00508153 00508023 00509122
import java.util.Scanner;  import java.util.Set;  import java.util.TreeMap;  public class Main {      public static void main(String[] args) {      Scanner sc = new Scanner(System.in);          int n=sc.nextInt();          TreeMap<String,String> hm=new TreeMap<String,String>();          for(int i=0;i<n;i++){              String sno=sc.next();              int m=sc.nextInt(),d=sc.nextInt();              String key=f(m,d);              String value=hm.get(key);              if(value==null){                  hm.put(key,sno);              }              else{                  hm.put(key, value+" "+sno);              }                                      }          Set<String> s=hm.keySet();          for(String t:s){              String v=hm.get(t);              if(v.indexOf(" ")!=-1){                  System.out.println(g(t)+" "+v);              }          }                         }      static String f(int month,int day){          String m=month+"";          String d=day+"";          if(month<10)  m="0"+m;          if(day<10)  d="0"+d;          return m+" "+d;      }      static String g(String md){          String[] t=md.split(" ");          return Integer.parseInt(t[0])+" "+Integer.parseInt(t[1]);                }        }    


原创粉丝点击