POJ C++程序设计 编程题#7:字符串排序
编程题#7:字符串排序
来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
总时间限制: 1000ms 内存限制: 1024kB
描述
请按照要求对输入的字符串进行排序。
#include <iostream> #include <string> #include <list> using namespace std;class A{ private:string name; public:A(string n) :name(n){}friend bool operator < (const class A& a1, const class A &a2);friend bool operator == (const class A &a1, const class A &a2){if (a1.name.size() == a2.name.size())return true;elsereturn false;}friend ostream & operator << (ostream &o, const A &a){o << a.name;return o;}string get_name() const{return name;}int get_size() const{return name.size();} }; // 在此处补充你的代码 int main(int argc, char* argv[]) {list<A> lst;int ncase, n, i = 1;string s;cin >> ncase;while (ncase--){cout << "Case: "<<i++ << endl;cin >> n;for (int i = 0; i < n; i++){cin >> s;lst.push_back(A(s));}lst.sort();Show(lst.begin(), lst.end(), Print());cout << endl;lst.sort(MyLarge<A>());Show(lst.begin(), lst.end(), Print());cout << endl;lst.clear();}return 0; }
输入
第一行是正整数T,表示测试数据的组数
每组测试数据输入共两行,
第一行是正整数N,表示字符串个数
第二行是N个字符串, 字符串间用空格分离
输出
对于每组测试数据,先输出一行:
Case: n
如对第一组数据就输出Case: 1
第二行按照字符串长度从小到大排序之后输出N个字符串,字符串之间以空格间隔(不会出现字符串长度相同的情况)
第三行按照字符串首字符ASCII码序从小到大排序之后输出N个字符串,字符串之间以空格间隔(不会出现字符串首字母相同的情况)
样例输入
2 4 a bnss ds tsdfasg 5 aaa bbbb ccccd sa q
样例输出
Case: 1 a ds bnss tsdfasg a bnss ds tsdfasg Case: 2 q sa aaa bbbb ccccd aaa bbbb ccccd q sa
1 #include <iostream> 2 #include <string> 3 #include <list> 4 using namespace std; 5 6 class A{ 7 private: 8 string name; 9 public: 10 A(string n) :name(n){} 11 friend bool operator < (const class A& a1, const class A &a2); 12 friend bool operator == (const class A &a1, const class A &a2){ 13 if (a1.name.size() == a2.name.size()) 14 return true; 15 else 16 return false; 17 } 18 friend ostream & operator << (ostream &o, const A &a){ 19 o << a.name; 20 return o; 21 } 22 string get_name() const{ 23 return name; 24 } 25 int get_size() const{ 26 return name.size(); 27 } 28 }; 29 // 在此处补充你的代码 30 bool operator< (const A& a1, const A &a2) { 31 return a1.name.size() < a2.name.size(); 32 }; 33 34 template <class Iterator, class Function> 35 void Show(Iterator begin, Iterator end, Function print) { 36 for (Iterator iterator1 = begin; iterator1 != end; iterator1++) { 37 print(*iterator1); 38 } 39 }; 40 41 class Print { 42 public: 43 void operator()(const A &a) { 44 cout << a.get_name()<< " "; 45 } 46 }; 47 48 template <class A> 49 struct MyLarge { 50 inline bool operator()(const A &a1, const A &a2) { 51 return a1.get_name() < a2.get_name(); 52 } 53 }; 54 55 int main(int argc, char* argv[]) 56 { 57 list<A> lst; 58 int ncase, n, i = 1; 59 string s; 60 cin >> ncase; 61 while (ncase--){ 62 cout << "Case: "<<i++ << endl; 63 cin >> n; 64 for (int i = 0; i < n; i++){ 65 cin >> s; 66 lst.push_back(A(s)); 67 } 68 lst.sort(); 69 Show(lst.begin(), lst.end(), Print()); 70 71 cout << endl; 72 lst.sort(MyLarge<A>()); 73 Show(lst.begin(), lst.end(), Print()); 74 cout << endl; 75 lst.clear(); 76 } 77 return 0; 78 }
转载于:https://www.cnblogs.com/dagon/p/4833352.html
POJ C++程序设计 编程题#7:字符串排序相关推荐
- POJ C++程序设计 编程题#4:计算整数平方和
编程题#4:计算整数平方和 来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 总时间限制: 1000ms 内存限制: 102 ...
- POJ C++程序设计 编程题#2 魔兽世界之二:装备
编程题#2: 魔兽世界之二:装备 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...
- 吉比特2017年秋招编程题:字符串排序
date:2017/8/27 厦门吉比特网络技术股份有限公司在线笔试 (#isalpha函数判断字母 #isdigit函数判断数字) 输入一串字符串(包含字符和数字)如:sd341a 将字符串进行排序 ...
- 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...
编程题:字符串的指针引用.用指针法实现.功能:将字符串str2复制连接到str1 #include<stdio.h> void main() { char *s1,*s2, str1[30 ...
- 沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇)
沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇) 7-1 求阶乘序列前N项和 (15分) 本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和. 输入格式 ...
- c语言输入若干数输出最小值循环结构,C语言循环结构程序设计编程题
<C语言循环结构程序设计编程题>由会员分享,可在线阅读,更多相关<C语言循环结构程序设计编程题(3页珍藏版)>请在人人文库网上搜索. 1.实验3循环结构程序设计.实验目的:1 ...
- 江苏大学考研885程序设计 - 编程题笔记
江苏大学考研专业课编程题 这个暂时还不能完全放出来!万一被对手看到了怎么办! --2020.10.30 本人已经上岸.....所有内容都放出来了! -- 2021 √文件操作模板 字符串操作 √编程题 ...
- java程序设计编程题_20165237 2017-2018-2 《Java程序设计》第十周考试补做及编程题...
20165237 2017-2018-2 <Java程序设计>第十周考试补做及编程题 知识点 1.链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 . ...
- java 字符串编程题_Java编程题——在一个字符串中查找第一个非重复的字符
编写一个Java程序来查找一个字符串中第一个非重复的字符,这是在编程测试中很常见的一个问题,因为字符串处理在程序员面试中是一个普遍的话题.面试前最好是准备好一些熟知的编程问题,例如使用递归反转字符串, ...
最新文章
- VDI序曲二十一 APP-V 4.6 SP1服务器端部署
- 【错误记录】p7zip 交叉编译 Android 版本 NDK 报错 ( error: case value evaluates to -2 , which cannot be narrowed )
- SQL server与Oracle触发器的创建与使用
- lsof 查看进程打开那些文件 和 查看文件给那个进程使用
- oracle修改参数
- python是如何实现进程池和线程池的_进程、线程、线程池和协程如何理解?
- Tomcat源代码解析系列
- 关于移动端布局和pc端写法
- 问题十五:C++中抽象类,虚函数是什么鬼?怎么测试
- NEYC 2017 游记
- 立林门禁读卡器接线图_立林楼宇对讲维修方法—常见故障的解决方法
- 直播客户端和浏览器使用桌面共享时出现黑屏等问题
- Unity做MMD(一)资源处理
- 许鹏:从零开始学习,Apache Spark源码走读(三)
- 十大精选开源软件推荐:编程化繁为简
- C/C++编程学习 - 第3周 ⑥ 温度表达转化
- 2020 EBC徒步功课做好 好好工作心态,Android并发原理解析
- mysql 2008降序排列_sql 升序降序排列
- pythontrycatch所有异常状态_python 一篇搞定所有的异常处理
- 2022-2028全球与中国电源连接器市场现状及未来发展趋势
热门文章
- 2017计算机软件考试试题,2017年计算机应用考试试题含答案.doc
- c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战
- 应该是最全的算法学习路线了吧法学习路线了吧
- P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
- SiamMask算法详解
- C++双冒号和单冒号的用法区别
- 各种光源(灯)的光谱
- ASP.NET MVC:缓存功能的设计及问题
- 光流法目标跟踪原理(不带公式)
- batch lr替代关系_建立关系的替代方法