编程题#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:字符串排序相关推荐

  1. POJ C++程序设计 编程题#4:计算整数平方和

    编程题#4:计算整数平方和 来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 总时间限制: 1000ms 内存限制: 102 ...

  2. POJ C++程序设计 编程题#2 魔兽世界之二:装备

    编程题#2: 魔兽世界之二:装备 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...

  3. 吉比特2017年秋招编程题:字符串排序

    date:2017/8/27 厦门吉比特网络技术股份有限公司在线笔试 (#isalpha函数判断字母 #isdigit函数判断数字) 输入一串字符串(包含字符和数字)如:sd341a 将字符串进行排序 ...

  4. 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...

    编程题:字符串的指针引用.用指针法实现.功能:将字符串str2复制连接到str1 #include<stdio.h> void main() { char *s1,*s2, str1[30 ...

  5. 沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇)

    沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇) 7-1 求阶乘序列前N项和 (15分) 本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和. 输入格式 ...

  6. c语言输入若干数输出最小值循环结构,C语言循环结构程序设计编程题

    <C语言循环结构程序设计编程题>由会员分享,可在线阅读,更多相关<C语言循环结构程序设计编程题(3页珍藏版)>请在人人文库网上搜索. 1.实验3循环结构程序设计.实验目的:1 ...

  7. 江苏大学考研885程序设计 - 编程题笔记

    江苏大学考研专业课编程题 这个暂时还不能完全放出来!万一被对手看到了怎么办! --2020.10.30 本人已经上岸.....所有内容都放出来了! -- 2021 √文件操作模板 字符串操作 √编程题 ...

  8. java程序设计编程题_20165237 2017-2018-2 《Java程序设计》第十周考试补做及编程题...

    20165237 2017-2018-2 <Java程序设计>第十周考试补做及编程题 知识点 1.链表是由若干个称作节点的对象组成的一种数据结构,每个节点含有一个数据和下一个节点的引用 . ...

  9. java 字符串编程题_Java编程题——在一个字符串中查找第一个非重复的字符

    编写一个Java程序来查找一个字符串中第一个非重复的字符,这是在编程测试中很常见的一个问题,因为字符串处理在程序员面试中是一个普遍的话题.面试前最好是准备好一些熟知的编程问题,例如使用递归反转字符串, ...

最新文章

  1. VDI序曲二十一 APP-V 4.6 SP1服务器端部署
  2. 【错误记录】p7zip 交叉编译 Android 版本 NDK 报错 ( error: case value evaluates to -2 , which cannot be narrowed )
  3. SQL server与Oracle触发器的创建与使用
  4. lsof 查看进程打开那些文件 和 查看文件给那个进程使用
  5. oracle修改参数
  6. python是如何实现进程池和线程池的_进程、线程、线程池和协程如何理解?
  7. Tomcat源代码解析系列
  8. 关于移动端布局和pc端写法
  9. 问题十五:C++中抽象类,虚函数是什么鬼?怎么测试
  10. NEYC 2017 游记
  11. 立林门禁读卡器接线图_立林楼宇对讲维修方法—常见故障的解决方法
  12. 直播客户端和浏览器使用桌面共享时出现黑屏等问题
  13. Unity做MMD(一)资源处理
  14. 许鹏:从零开始学习,Apache Spark源码走读(三)
  15. 十大精选开源软件推荐:编程化繁为简
  16. C/C++编程学习 - 第3周 ⑥ 温度表达转化
  17. 2020 EBC徒步功课做好 好好工作心态,Android并发原理解析
  18. mysql 2008降序排列_sql 升序降序排列
  19. pythontrycatch所有异常状态_python 一篇搞定所有的异常处理
  20. 2022-2028全球与中国电源连接器市场现状及未来发展趋势

热门文章

  1. 2017计算机软件考试试题,2017年计算机应用考试试题含答案.doc
  2. c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战
  3. 应该是最全的算法学习路线了吧法学习路线了吧
  4. P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
  5. SiamMask算法详解
  6. C++双冒号和单冒号的用法区别
  7. 各种光源(灯)的光谱
  8. ASP.NET MVC:缓存功能的设计及问题
  9. 光流法目标跟踪原理(不带公式)
  10. batch lr替代关系_建立关系的替代方法