• POJ C++程序设计 编程题#9:人群的排序和分类


    编程题#9:人群的排序和分类

    来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

    总时间限制: 1000ms 内存限制: 1024kB

     

    描述

    对人群按照输入的信息进行排序和分类。

    #include <iostream>
    #include <set>
    #include <iterator>
    #include <algorithm>
    using namespace std;
    // 在此处补充你的代码
    int main()
    {
    
            int t;
            cin >> t;
            set<A*,Comp> ct;
            while( t -- ) {
                    int n;
                    cin >> n;
                    ct.clear();
                    for( int i = 0;i < n; ++i)	{
                            char c; int k;
                            cin >> c >> k;
    
                            if( c == 'A')
                                    ct.insert(new A(k));
                            else
                                    ct.insert(new B(k));
                    }
                    for_each(ct.begin(),ct.end(),Print);
                    cout << "****" << endl;
            }
    }

    输入

    第一行是整数t,表明一共t组数据. t < 20

    对每组数据:

    第一行是整数n,表示下面一共有n行。 0 < n < 100

    下面的每行代表一个人。每行以一个字母开头,代表该人所属的类别,然后跟着一个整数,代表年龄。字母只会是 'A‘或‘B' 。整数范围0到100。数据保证年龄都不相同。

     

    输出

    对每组输入数据,将这些人按年龄从小到大输出。每个人先输出类别,再输出年龄。每组数据的末尾加一行 "****"

     

    样例输入

    2
    4
    A 3
    B 4
    A 5
    B 6
    3
    A 4
    A 3
    A 2

    样例输出

    A 3
    B 4
    A 5
    B 6
    ****
    A 2
    A 3
    A 4
    ****

     1 #include <iostream>
     2 #include <set>
     3 #include <iterator>
     4 #include <algorithm>
     5 using namespace std;
     6 // 在此处补充你的代码
     7 class A {
     8 public:
     9     int age;
    10     string s;
    11     A(int a):age(a), s("A"){}
    12     A(int a, string str):age(a), s(str) {}
    13 };
    14 
    15 class B:public A {
    16 public:
    17     B(int b):A(b, "B") {}
    18 };
    19 
    20 struct Comp {
    21     bool operator()(const A* a1, const A* a2) const {
    22         return a1->age < a2->age;
    23     }
    24 };
    25 
    26 void Print(const A *a) {
    27     cout<<a->s<<" "<<a->age << endl;
    28 }
    29 
    30 int main()
    31 {
    32 
    33     int t;
    34     cin >> t;
    35     set<A*,Comp> ct;
    36     while( t -- ) {
    37         int n;
    38         cin >> n;
    39         ct.clear();
    40         for( int i = 0;i < n; ++i)    {
    41             char c; int k;
    42             cin >> c >> k;
    43 
    44             if( c == 'A')
    45                 ct.insert(new A(k));
    46             else
    47                 ct.insert(new B(k));
    48         }
    49         for_each(ct.begin(),ct.end(),Print);
    50         cout << "****" << endl;
    51     }
    52 }
  • 相关阅读:
    Python老男孩 day09
    mount 挂载usb
    解压以及压缩命令
    flask 安装
    寻找文件 的小栗子
    Linux 环境变量与文件查找
    vim 查找和替换
    vim 基本功能 删除 移动 复制 粘贴
    selenium python 处理alter
    selenium python 显式和隐式等待方法
  • 原文地址:https://www.cnblogs.com/dagon/p/4833460.html
Copyright © 2020-2023  润新知