一种排序

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描写叙述
如今有非常多长方形。每个长方形都有一个编号,这个编号能够反复。还知道这个长方形的宽和长,编号、长、宽都是整数;如今要求依照一下方式排序(默认排序规则都是从小到大);



1.依照编号从小到大排序



2.对于编号相等的长方形,依照长方形的长排序;



3.假设编号和长都同样,依照长方形的宽排序;



4.假设编号、长、宽都同样,就仅仅保留一个长方形用于排序,删除多余的长方形。最后排好序依照指定格式显示全部的长方形;

输入
第一行有一个整数 0<n<10000,表示接下来有n组測试数据;

每一组第一行有一个整数 0<m<1000,表示有m个长方形;

接下来的m行。每一行有三个数 ,第一个数表示长方形的编号,



第二个和第三个数值大的表示长,数值小的表示宽,相等

说明这是一个正方形(数据约定长宽与编号都小于10000)。
输出
顺序输出每组数据的全部符合条件的长方形的 编号 长 宽
例子输入
1
8
1 1 1
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
例子输出
1 1 1
1 2 1
1 2 2
2 1 1
2 2 1
来源

经典题目

#include<stdio.h>
#include<algorithm>
using namespace std;
struct st
{
int xh;
int c,k;
}data[1010];
int cmp(st a,st b)//排序关键!
{
if(a.xh!=b.xh)return a.xh<b.xh;
else if(a.c!=b.c)return a.c<b.c;
else if(a.k!=b.k)return a.k<b.k;
}
int main()
{
int test,i,n,t;
scanf("%d",&test);
while(test--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d%d",&data[i].xh,&data[i].c,&data[i].k);//注意比較长宽大小。
if(data[i].c<data[i].k){
t=data[i].c;
data[i].c=data[i].k;
data[i].k=t;
}
}
sort(data,data+n,cmp);
for(i=0;i<n;i++)
{
if(!(data[i].xh==data[i+1].xh&&data[i].c==data[i+1].c&&data[i].k==data[i+1].k))
printf("%d %d %d\n",data[i].xh,data[i].c,data[i].k);
}
}
return 0;
}

一种排序(nyoj8)(简单排序)的更多相关文章

  1. 《Algorithms算法》笔记:元素排序(1)——简单排序

    <Algorithms算法>元素排序(1)——简单排序 Algorithms算法元素排序1简单排序 排序问题 1 回调函数 2Java中回调函数的路线图 3 全序 4 Comparable ...

  2. C#实现(递归和非递归)高速排序和简单排序等一系列排序算法

        本人由于近期工作用到了一些排序算法.就把几个简单的排序算法.想冒泡排序,选择排序,插入排序.奇偶排序和高速排序等整理了出来,代码用C#代码实现,而且通过了測试.希望能给大家提供參考.     ...

  3. 简单排序算法设计(Java)

    总共有八种排序算法,还是慢慢看吧 1.简单排序算法 简单排序算法就是设置标兵,逐个比较数,然后查找插入位置,插入 public static void p(int[] a){ for(int i=0; ...

  4. 《Algorithm算法》笔记:元素排序(2)——希尔排序

    <Algorithm算法>笔记:元素排序(2)——希尔排序 Algorithm算法笔记元素排序2希尔排序 希尔排序思想 为什么是插入排序 h的确定方法 希尔排序的特点 代码 有关排序的介绍 ...

  5. 数据结构与算法之--高级排序:shell排序和快速排序

    高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序大约是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希 ...

  6. java学习总结篇二--3 种简单排序

    本篇文章,先从数据结构开始,一边总结,一边反思,寻求最优解. 本文简单温习下最基础的三类算法:选择,冒泡,插入.先定义一个交换数组作为备用: /** * 交换数组元素 * @param arr * @ ...

  7. Java数据结构和算法之数组与简单排序

    一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信 ...

  8. 两种应该掌握的排序方法--------1.shell Sort

    先了解下什么都有什么排序算法 https://en.wikipedia.org/wiki/Sorting_algorithm http://zh.wikipedia.org/zh/%E6%8E%92% ...

  9. 几种经典的数据排序及其Java实现

    选择排序 思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空. ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k ...

随机推荐

  1. perl学习之正则表达式

    9    Perl 中的正则表达式 正则表达式的三种形式 正则表达式中的常用模式 正则表达式的 8 大原则 正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很 ...

  2. $monitor用法

    1.$monitor 进程同一时间有且仅有一个,若多次调用$monitor,新进程会代替以前的monitor进程. 2.$fmonitor可以同时存在任意个. 3.一般不用$monitor系统函数. ...

  3. python其他

    其他 1.迭代器 定义:帮助对某类对象(str/list/tuple/dict/set)中的元素进行逐一获取 可迭代对象:内部具有__iter__()方法且返回一个迭代地址.(可被for循环就是可迭代 ...

  4. day20-python之装饰器

    1.装饰器 #!/usr/bin/env python # -*- coding:utf-8 -*- import time def cal(l): start_time=time.time() re ...

  5. java 之Thread线程相关yield()、sleep()、wait()、join()、run和start方法详解

    1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...

  6. 组队赛Day1第一场 GYM 101350A - Sherlock Bones (DP)

    [题意] 给你一个01串.f(i,j)定义为区间[i,j]内1的个数,求区间 [i,j,k] 中 f(i,j) =f(j,k) 的情况的子串总数,要求str[j]=='1'. (题意描述引自Ilook ...

  7. CentOS6配置静态IP

    CentOS6配置静态IP 1. 编辑网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=不需要改 TYPE=Et ...

  8. .NET重构(三):在注册和充值中,触发器的使用

    导读:机房做到注册和充值了,有两个关键点:在注册的时候,同时给该用户写入充值记录:在充值的时候,给该用户更改余额信息.第一次做的时候,是一条一条的写,那时候师傅就说了触发器和存储过程的使用,现在终于用 ...

  9. 九度oj 题目1347:孤岛连通工程

    题目描述: 现在有孤岛n个,孤岛从1开始标序一直到n,有道路m条(道路是双向的,如果有多条道路连通岛屿i,j则选择最短的那条),请你求出能够让所有孤岛都连通的最小道路总长度. 输入: 数据有多组输入. ...

  10. 九度oj 题目1028:继续畅通工程

    题目描述:     省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用 ...