当前位置:编程学习 > 网站相关 >>

STL 练手题 一种排序

algorithm  中  自写的  sort()排序
 
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct rectangle
{
    int l;
    int w;
    int num;
} ret[1001];
int cmp(rectangle a,rectangle b)
{
    if(a.num==b.num)
    {
        if(a.l==b.l)
            return a.w<b.w;
        return a.l<b.l;
    }
    else return a.num<b.num;
}
int  main()
{
    int test;
    while(scanf("%d",&test)!=EOF)
    {
        while(test--)
        {
            int n;
            scanf("%d",&n);
            for(int i=0; i<n; i++)
            {
                int a,b;
                scanf("%d%d%d",&ret[i].num,&a,&b);
                ret[i].l=a>b?a:b;
                ret[i].w=a>b?b:a;
            }
            sort(ret,ret+n,cmp);
            int a,b,c;
            a=ret[0].num;
            b=ret[0].l;
            c=ret[0].w;
            printf("%d %d %d\n",a,b,c);
            for(int i=1; i<n; i++)
            {
                if(a==ret[i].num&&b==ret[i].l&&c==ret[i].w) continue;
                a=ret[i].num;
                b=ret[i].l;
                c=ret[i].w;
                printf("%d %d %d\n",a,b,c);
            }
        }
    }
    return 0;
}
 
 
[cpp] view plaincopyprint?#include<cstdio>   
#include<iostream>   
#include<algorithm>   
using namespace std;  
struct rectangle  
{  
    int l;  
    int w;  
    int num;  
} ret[1001];  
int cmp(rectangle a,rectangle b)  
{  
    if(a.num==b.num)  
    {  
        if(a.l==b.l)  
            return a.w<b.w;  
        return a.l<b.l;  
    }  
    else return a.num<b.num;  
}  
int  main()  
{  
    int test;  
    while(scanf("%d",&test)!=EOF)  
    {  
        while(test--)  
        {  
            int n;  
            scanf("%d",&n);  
            for(int i=0; i<n; i++)  
            {  
                int a,b;  
                scanf("%d%d%d",&ret[i].num,&a,&b);  
                ret[i].l=a>b?a:b;  
                ret[i].w=a>b?b:a;  
            }  
            sort(ret,ret+n,cmp);  
            int a,b,c;  
            a=ret[0].num;  
            b=ret[0].l;  
            c=ret[0].w;  
            printf("%d %d %d\n",a,b,c);  
            for(int i=1; i<n; i++)  
            {  
                if(a==ret[i].num&&b==ret[i].l&&c==ret[i].w) continue;  
                a=ret[i].num;  
                b=ret[i].l;  
                c=ret[i].w;  
                printf("%d %d %d\n",a,b,c);  
            }  
        }  
    }  
    return 0;  
}  
 
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct rectangle
{
    int l;
    int w;
    int num;
} ret[1001];
int cmp(rectangle a,rectangle b)
{
    if(a.num==b.num)
    {
        if(a.l==b.l)
            return a.w<b.w;
        return a.l<b.l;
    }
    else return a.num<b.num;
}
int  main()
{
    int test;
    while(scanf("%d",&test)!=EOF)
    {
        while(test--)
        {
            int n;
            scanf("%d",&n);
            for(int i=0; i<n; i++)
            {
                int a,b;
                scanf("%d%d%d",&ret[i].num,&a,&b);
                ret[i].l=a>b?a:b;
                ret[i].w=a>b?b:a;
            }
补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,