POJ C++程序设计 编程题#9:人群的排序和分类
2015-09-23 20:42
375 查看
编程题#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 ****
#include <iostream> #include <set> #include <iterator> #include <algorithm> using namespace std; // 在此处补充你的代码 class A { public: int age; string s; A(int a):age(a), s("A"){} A(int a, string str):age(a), s(str) {} }; class B:public A { public: B(int b):A(b, "B") {} }; struct Comp { bool operator()(const A* a1, const A* a2) const { return a1->age < a2->age; } }; void Print(const A *a) { cout<<a->s<<" "<<a->age << endl; } 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; } }
相关文章推荐
- C++this指针、智能指针
- C++语言const修饰指针
- C++习题二第12题
- 文章标题
- 蓝桥杯 地宫寻宝 带缓存的DFS
- Effective C++——条款53(第9章)
- VC++编译器调试(一)
- POJ C++程序设计 编程题#7:字符串排序
- C++函数返回引用
- string c++ 详解 erase find .
- c++设计模式----解释器模式interpreter
- 【c++ templates读书笔记】【2】类模板
- 【c++ templates读书笔记】【2】类模板
- C++一个简单的手柄类模板
- C++学习记录之STL函数
- 如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测
- OC语言混合编辑
- cmd下nmake编译c++文件提示找不到VC下面的头文件
- RichEdit的复制与粘贴
- 只恨当初没有你——C++等级选择篇(一)