nyoj 8一种排序

Posted henufyh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nyoj 8一种排序相关的知识,希望对你有一定的参考价值。

时间限制: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
 1 /*************************************************************************
 2     > File Name: 8.cpp
 3     > Author: MarkFo
 4     > Mail: [email protected] 
 5     > Created Time: 2018-02-12 17:09:37
 6  ************************************************************************/
 7 
 8 #include <iostream>
 9 #include <algorithm>
10 #include <string.h>
11 #include <string>
12 #include <stdio.h>
13 #include <stdlib.h>
14 using namespace std;
15 
16 struct Node{
17     int a;
18     int b;
19     int c;
20 };
21 
22 bool cmp(Node node1, Node node2)
23 {
24     if (node1.a != node2.a)
25     {
26         return node1.a < node2.a;
27     }
28     else if (node1.b != node2.b)
29     {
30         return node1.b < node2.b;
31     }
32     else if (node1.c != node2.c)
33     {
34         return node1.c < node2.c;
35     }
36 }
37 
38 int main()
39 {
40     int t;
41     Node arr[1005];
42     cin >> t;
43     while (t--)
44     {
45         int tt;
46         cin >> tt;
47         for (int i = 0; i < tt; ++i)
48         {
49             cin >> arr[i].a >> arr[i].b >> arr[i].c;
50             if (arr[i].b < arr[i].c)
51             {
52                 int tmp;
53                 tmp = arr[i].b;
54                 arr[i].b = arr[i].c;
55                 arr[i].c = tmp;
56             }
57         }
58 
59         stable_sort(arr, arr+tt, cmp);
60 
61         int flag[1005] = {0};
62         for (int i = 1; i < tt; ++i)
63         {
64             if (arr[i].a == arr[i-1].a && arr[i].b == arr[i-1].b && arr[i].c == arr[i-1].c)
65             {
66                 flag[i] = 1;
67             }
68         }
69         
70         for (int i = 0; i < tt; ++i)
71         {
72             if (flag[i] == 0)
73             {
74                 cout << arr[i].a << " " << arr[i].b << " " << arr[i].c << endl;
75             }
76         }
77     }
78 
79     return 0;
80 }

 

以上是关于nyoj 8一种排序的主要内容,如果未能解决你的问题,请参考以下文章

(去重 sort)nyoj8-一种排序

一种排序(nyoj8)(简单排序)

nyoj08 一种排序

(排序的新方法)nyoj1080-年龄排序

NYOJ 1233 差值(字符串排序+大数减法)

NYOJ-最少步数