题解 | #最大的两个数#

最大的两个数

https://www.nowcoder.com/practice/7385949943264a9fa4348cbd43e6e00c

1.dev过第二个例子就是对的,牛客居然通不过,抽象

#include<iostream>

#include<algorithm>

using namespace std;

typedef struct{

    int x;

    int y;

}number;

bool cmp(number a,number b)

{

    if(a.x>b.x)

    return true;

    return false;

}

bool cmb(number c,number d)

{

    if(c.y<d.y)

    return true;

    return false;

}

int main()

{

    int a[4][5];

    number A[4],B[4],C[4],D[4],E[4];

    while(cin>>a[0][0]>>a[0][1]>>a[0][2]>>a[0][3]>>a[0][4])

    {

        A[0].x=a[0][0];B[0].x=a[0][1];

        C[0].x=a[0][2];D[0].x=a[0][3];E[0].x=a[0][4];

        A[0].y=0;B[0].y=0;E[0].y=0;D[0].y=0;E[0].y=0;

        for(int i=1;i<4;i++)

        {

            A[i].y=i;B[i].y=i;C[i].y=i;D[i].y=i;E[i].y=i;

            for(int j=0;j<5;j++)

            {

                cin>>a[i][j];

                if(j==0)

                A[i].x=a[i][j];

                if(j==1)

                B[i].x=a[i][j];

                if(j==2)

                C[i].x=a[i][j];

                if(j==3)

                D[i].x=a[i][j];

                if(j==4)

                E[i].x=a[i][j];

            }

        }

        //先对整体排序,再对前两个排序,因为如果前两个相等,那排序与否无所谓,如果不相等,需要根据行号再进行排序,行号小的在前

        stable_sort(A,A+4,cmp);stable_sort(B,B+4,cmp);

        stable_sort(C,C+4,cmp);stable_sort(D,D+4,cmp);stable_sort(E,E+4,cmp);

        sort(A,A+2,cmb);sort(B,B+2,cmb);sort(C,C+2,cmb);

        sort(D,D+2,cmb);sort(E,E+2,cmb);

        for(int i=0;i<2;i++)

        cout<<A[i].x<<" "<<B[i].x<<" "<<C[i].x<<" "<<D[i].x<<" "<<E[i].x<<endl;

    }

    return 0;

}

全部评论

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务