zoukankan      html  css  js  c++  java
  • 一种排序

    一种排序
    时间限制: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 #include<stdio.h>
     2 int main()
     3 {
     4     int l[10000],k[10000],h[10000],j,i,n,m,t,b;
     5     scanf("%d",&n);
     6     while(n--)
     7     {
     8         scanf("%d",&m);
     9         for(i=0;i<m;i++)
    10         {
    11             scanf("%d%d%d",&h[i],&l[i],&k[i]);//将长宽调换 
    12             if(k[i]>l[i]) {t=k[i];k[i]=l[i];l[i]=t;}
    13         }
    14         for(i=0;i<m-1;i++)
    15         {
    16             for(j=0;j<m-1-i;j++)
    17             {
    18                 if(h[j]>h[j+1])//编号排序 
    19                 {
    20                     t=h[j];h[j]=h[j+1];h[j+1]=t;
    21                     t=l[j];l[j]=l[j+1];l[j+1]=t;
    22                     t=k[j];k[j]=k[j+1];k[j+1]=t;
    23                 }
    24             }
    25         }
    26         for(i=0;i<m-1;i++)
    27         {
    28             for(j=0;j<m-1-i;j++)
    29             {
    30                 if(h[j]==h[j+1]&&l[j]>l[j+1])// 第二层排序 
    31                 {
    32                     t=h[j];h[j]=h[j+1];h[j+1]=t;
    33                     t=l[j];l[j]=l[j+1];l[j+1]=t;
    34                     t=k[j];k[j]=k[j+1];k[j+1]=t;
    35                 }
    36             }
    37         }
    38         for(i=0;i<m-1;i++)
    39         {
    40             for(j=0;j<m-1-i;j++)
    41             {
    42                 if(h[j]==h[j+1]&&l[j]==l[j+1]&&k[j]>k[j+1])// 第三层排序 
    43                 {
    44                     t=h[j];h[j]=h[j+1];h[j+1]=t;
    45                     t=l[j];l[j]=l[j+1];l[j+1]=t;
    46                     t=k[j];k[j]=k[j+1];k[j+1]=t;
    47                 }
    48                 if(h[j]==h[j+1]&&l[j]==l[j+1]&&k[j]==k[j+1])// 编号、长、宽都相同,就只保留一个长方形用于排序,删除多余的长方形
    49                 {
    50                     for(b=j;b<m-1-i;b++)                   //
    51                     {
    52                         h[b]=h[b+1];
    53                         l[b]=l[b+1];
    54                         k[b]=k[b+1];
    55                     }
    56                     j--;
    57                     m--;
    58                 }
    59             }
    60         }
    61         for(i=0;i<m;i++)
    62             printf("%d %d %d
    ",h[i],l[i],k[i]);
    63     }
    64     return 0;
    65 }
  • 相关阅读:
    openwrt 相关文章
    负载均衡相关文章
    Today's Progress
    Rodrigues formula is beautiful, but uneven to sine and cosine. (zz Berkeley's Page)
    Camera Calibration in detail
    Fundamental Matrix in Epipolar
    Camera Calibration's fx and fy do Cares in SLAM
    FilterEngine::apply
    FilterEngine 类解析——OpenCV图像滤波核心引擎(zz)
    gaussBlur
  • 原文地址:https://www.cnblogs.com/acmgym/p/3691867.html
Copyright © 2011-2022 走看看