PAT-Talent and Virtue (25)

题意:

按题意进行排序

解答:

这里还是按以前的做法写一个比较器就可以了


用new Comparator<o>{

public int compare(o o1,o o2){}

}

或者implements comparable<o o1>{

public int compareTo(o o1){}

}

具体Java如下:

import java.util.*;
public class Main{
    public static void main(String[] args){
         
        Scanner in=new Scanner(System.in);
        int N=in.nextInt();
        int L=in.nextInt();
        int H=in.nextInt();
        Man[] m=new Man[N];
        ArrayList<Man> list1=new ArrayList();
        ArrayList<Man> list2=new ArrayList();
        ArrayList<Man> list3=new ArrayList();
        ArrayList<Man> list4=new ArrayList();
        for(int i=0;i<N;i++){
            m[i]=new Man();
            m[i].id=in.next();
            m[i].v=in.nextInt();
            m[i].t=in.nextInt();
           if(m[i].v>=H&&m[i].t>=H){
               list1.add(m[i]);
           }
           else if(m[i].v>=H&&m[i].t>=L){
               list2.add(m[i]);
           }
            else if(m[i].v>=L&&m[i].t>=L&&m[i].v>=m[i].t){
                list3.add(m[i]);
            }
            else if(m[i].v>=L&&m[i].t>=L)
                list4.add(m[i]);
             
        }
        Comparator<Man> c=new Comparator<Man>(){
             
            public int compare(Man m1,Man m2){
                    if(m1.v+m1.t>m2.v+m2.t){
                        return 1;
                    }
                    else if(m1.v+m1.t<m2.v+m2.t){
                        return -1;
                    }
                    else{
                        if(m1.v>m2.v){
                            return 1;
                        }
                        else if(m1.v<m2.v)
                            return -1;
                        else{
                            if(Integer.parseInt(m1.id)>Integer.parseInt(m2.id))
                                return -1;
                            else
                                return 1;
                        }
                    }
                }
            };
         Collections.sort(list1,c);
         Collections.sort(list2,c);
         Collections.sort(list3,c);
         Collections.sort(list4,c);
        System.out.println(list1.size()+list2.size()+list3.size()+list4.size());
        for(int i=0;i<list1.size();i++){
            Man w=list1.get(list1.size()-1-i);
            System.out.println(w.id+" "+w.v+" "+w.t);
        }
        for(int i=0;i<list2.size();i++){
            Man w=list2.get(list2.size()-1-i);
            System.out.println(w.id+" "+w.v+" "+w.t);
        }
         
        for(int i=0;i<list3.size();i++){
            Man w=list3.get(list3.size()-1-i);
            System.out.println(w.id+" "+w.v+" "+w.t);
        }
         
        for(int i=0;i<list4.size();i++){
            Man w=list4.get(list4.size()-1-i);
            System.out.println(w.id+" "+w.v+" "+w.t);
        }
         
        }
    }
 
class Man{
    String id;
    int v;
    int t;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值