题意

给出一系列字符串,然后要排序

排序规则

只按前两位按字典序来排序,如果前两位完全一样,则按输入的顺序来排

思路

要用 冒泡排序 不能用STL里面的 SORT 因为它不稳定

AC代码

#include <cstdio>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <set>
#include <numeric>
#include <sstream> using namespace std;
typedef long long LL; const double PI = 3.14159265358979323846264338327;
const double E = 2.718281828459;
const double eps = 1e-6; const int MAXN = 0x3f3f3f3f;
const int MINN = 0xc0c0c0c0;
const int maxn = 1e2 * 2 + 5;
const int MOD = 1e9 + 7; struct Node
{
string s;
int a, b;
}temp; int comp(Node x, Node y)
{
if (x.a == y.a && x.b != y.b)
return x.b > y.b;
else if(x.a != y.a)
return x.a > y.a;
else if (x.a == y.a && x.b == y.b)
return 0;
} int main()
{
int n;
int Case = 0;
while (cin >> n && n)
{
if (Case++)
printf("\n");
vector <Node> v;
v.clear();
for (int i = 0; i < n; i++)
{
cin >> temp.s;
temp.a = temp.s[0];
temp.b = temp.s[1];
v.push_back(temp);
}
for (int i = 1; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
if (comp(v[j], v[j + 1]))
swap(v[j], v[j + 1]);
}
}
for (int i = 0; i < n; i++)
cout << v[i].s << endl;
}
}

Kattis - sortofsorting 【排序】的更多相关文章

  1. G - Intersecting Rectangles Kattis - intersectingrectangles (扫描线)(判断多个矩形相交)

    题目链接: G - Intersecting Rectangles Kattis - intersectingrectangles 题目大意:给你n个矩形,每一个矩形给你这个矩形的左下角的坐标和右上角 ...

  2. Kattis - bank 【简单DP】

    Kattis - bank [简单DP] Description Oliver is a manager of a bank near KTH and wants to close soon. The ...

  3. Installing Apps Kattis - installingapps (贪心 + 背包)

    Installing Apps Kattis - installingapps Sandra recently bought her first smart phone. One of her fri ...

  4. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  5. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  6. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  7. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  8. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  9. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

随机推荐

  1. ajax查找错误信息

    error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHt ...

  2. 初尝CDN:什么是分布式服务节点?

    什么是CDN?笔者初见时也是摸不着头脑,查阅了大量的资料才明白什么是CDN,笔者为您揭秘什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络.CDN的通俗理解 ...

  3. javascript simple MVC

    <h3>javascript simple MVC</h3> <div> <select name="" id="setAnim ...

  4. Hibernate每个子类一张表(使用XML文件)实例

    在每个子类一张表的情况下,子类映射表与主键和外键关系与父类映射表相关. 类的<joined-subclass>元素用于使用主键和外键关系将子类与父对象进行映射. 在这个例子中,我们将使用h ...

  5. python 集合set remove update add

    1. 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型. 集合对象是一组无序排列hashable value:集合成员可以做字典的键. 集合就像是 list 和 dict 的 ...

  6. (转)txt读写 操作封装

    [code]csharpcode: using UnityEngine; using System.Collections.Generic; using System.IO; using System ...

  7. Oracle raw数据类型

    RAW的声明方式为RAW(L),L为长度,以字节为单位,它存数的是16进制的数据.作为数据库列最大2000,作为变量最大32767字节. RAW类型的好处就是:在网络中的计算机之间传输 RAW 数据时 ...

  8. JSON Extractor/jp@gc - JSON Path Extractor 举例2

    测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 { "status_code":200, "message&qu ...

  9. python学习【第二篇】初识python

    python的安装 windows 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机] ...

  10. php自定义函数: 文件大小转换成智能形式

    function format_byte($filesize) { if($filesize >= 1073741824) { $filesize = round($filesize / 107 ...