zoukankan      html  css  js  c++  java
  • 1035: 相同生日

    1035: 相同生日

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 232  解决: 139
    [提交][状态][讨论版]

    题目描述

    在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生。

    输入

    第一行为整数n,表示有n个学生,n<=200。此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度为11位)和出生月(1<=m<=12)日(1<=d<=31),学号、月、日之间用一个空格分隔。

    输出

    对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按输入的顺序输出。

    样例输入

    6
    07101020105 3 15
    07101020115 4 5
    07101020118 3 15
    07101020108 4 5
    07101020111 4 5
    07101020121 8 10

    样例输出

    3 15 07101020105 07101020118
    4 5 07101020115 07101020108 07101020111
    8 10 07101020121

    提示

     

    来源

    #include <iostream>
    #include <algorithm>
    using namespace std;
    struct student{
     char number[12];
     int month;
     int day;
    }stu[201];
    bool compare(student a,student b){
     if(a.month<b.month) return true;
     else if(a.month==b.month){
      if(a.day<b.day) return true;
      else return false;
     }else return false;
    }
    int main(){
     int n,i,j;
     cin>>n;
     for(i=0;i<n;i++){
      cin>>stu[i].number>>stu[i].month>>stu[i].day;
     }
     sort(stu,stu+n,compare);
     for(i=0;i<n;i++){
      for(j=i;j<n;j++){
       if(stu[i].month==stu[j].month&&stu[i].day==stu[j].day){
        if(i==j){
          cout<<stu[i].month<<" "<<stu[i].day<<" "<<stu[i].number;
        }
        else {
         cout<<" "<<stu[j].number;
        }
       }else{
        cout<<endl;
        i=j-1;
        break;
       }
      }
     }
     return 0;
    }

  • 相关阅读:
    装载问题
    分支限界法
    素数环问题
    图的m着色问题
    回溯法
    jquery+ajax 实现text框模糊搜索并可利用listbox实时显示模糊搜索列表结果
    jquery 操作listbox 左右相互选择
    SQL中游标的使用--遍历数据逐行更新或删除:相当于for循环
    Jquery提交form表单
    .Net中jQuery.ajax()调用asp.net后台方法 总结
  • 原文地址:https://www.cnblogs.com/lchzls/p/5781715.html
Copyright © 2011-2022 走看看