• 一种排序


    一种排序

    描述
    现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复;还知道这个长方形的宽和长,编号、长、宽都是整数;现在要求按照一下方式排序(默认排序规则都是从小到大);
    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

    代码使用STL的sort方法对结构体进行排序,值得学习

      

    #include<iostream>
    #include<algorithm>
    #define N 1010
    
    using namespace std;
    
    struct SS
    {
        int t1,t2,t3;
    }a[N];
    
    bool Comp(SS a,SS b)
    {
        if(a.t1<b.t1)  return true;
        if(a.t1==b.t1&&a.t2<b.t2) return true;
        if(a.t1==b.t1&&a.t2==b.t2&&a.t3<=b.t3) return true;
        return false;
    }
    
    int main()
    {
          int test;
          cin>>test;
          while(test--)
          {
              int n,i;
              cin>>n;
              for(i=0;i<n;i++)
              {
                  cin>>a[i].t1>>a[i].t2>>a[i].t3;
                  if(a[i].t2<a[i].t3)  swap(a[i].t2,a[i].t3);
              }
    
              sort(a,a+n,Comp);
              cout<<a[0].t1<<" "<<a[0].t2<<" "<<a[0].t3<<endl;
              for(i=1;i<n;i++)
              {
                  if(a[i].t1==a[i-1].t1&&a[i].t2==a[i-1].t2&&a[i].t3==a[i-1].t3)
                      continue;
                  cout<<a[i].t1<<" "<<a[i].t2<<" "<<a[i].t3<<endl;
              }
          }
           return 0;
    }
    View Code
  • 相关阅读:
    修改Matlab的背景颜色
    lane车道连接规则
    用汇编语言输出Hello World!
    运用ISAPI_Rewrite将asp静态化应注意路径
    广州,佛山>黄岐生活资讯网生活信息发布
    最近使用网络电话,还比较便宜
    小心中中国移动“短号集群网”的招
    正规表达式的一些知识
    ubuntu 8.04下安装和使用systemtap
    应用程序框架设计之二:分层和层间数据传递(上)
  • 原文地址:https://www.cnblogs.com/sanshuiyijing/p/3351777.html
Copyright © 2020-2023  润新知