Kattis - sortofsorting 【排序】
题意
给出一系列字符串,然后要排序
排序规则
只按前两位按字典序来排序,如果前两位完全一样,则按输入的顺序来排
思路
要用 冒泡排序 不能用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 【排序】的更多相关文章
- G - Intersecting Rectangles Kattis - intersectingrectangles (扫描线)(判断多个矩形相交)
题目链接: G - Intersecting Rectangles Kattis - intersectingrectangles 题目大意:给你n个矩形,每一个矩形给你这个矩形的左下角的坐标和右上角 ...
- Kattis - bank 【简单DP】
Kattis - bank [简单DP] Description Oliver is a manager of a bank near KTH and wants to close soon. The ...
- Installing Apps Kattis - installingapps (贪心 + 背包)
Installing Apps Kattis - installingapps Sandra recently bought her first smart phone. One of her fri ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- iOS可视化动态绘制八种排序过程
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
随机推荐
- Java Stream 官方文档翻译
先立个flag https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
- 【转】【Mac系统】之ADB命令总结
参考文章: 张明云:<Android ADB命令大全(通过ADB命令查看wifi密码.MAC地址.设备信息.操作文件.查看文件.日志信息.卸载.启动和安装APK等)> Yjnull:< ...
- jenkins登录使用cas认证
jenkins是目前打包管理项目最牛的工具.http://192.168.35.50:4000/jenkins%20plugin/system/74-cas-plugin.html
- SlidingMenu官方实例分析5——FragmentChangeActivity
FragmentChangeActivity 这个类在OnCreate中依然判断了savedInstanceState,原因同上文一样,但是他这里使用了 这个方法是在转屏幕的时候,用于保存一些参数,比 ...
- 求伪逆矩阵c++代码(Eigen库)
非方阵的矩阵的逆矩阵 pseudoInverse 伪逆矩阵是逆矩阵的广义形式,广义逆矩阵 matlab中是pinv(A)-->inv(A). #include "stdafx.h&q ...
- linux以下C 利用openssl的AES库加密,解密
OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是所有支持或者是部分支持. 返回值:"aes(full)" ...
- Machine Learning第十周笔记:大规模机器学习
博客已经迁移到Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕了Andrew Ng在Cousera上的Machine Learning的第 ...
- 关于 js 动态生成html 绑定事件失效的问题
在实际问题中,也只到使用新版jq 的on 事件 进行动态元素的绑定: 是这样 (但是依然没有效果——): $('dom节点').on('click',function(){}) 之后经过查阅发现:正确 ...
- Android中android:layout_alignParentBottom标签不生效
Android中一个奇怪的问题 Android 6.0中android:layout_alignParentBottom设置后不生效. 详见:https://code.google.com/p/and ...
- iOS学习笔记(九)—— xml数据解析
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...