1 条题解

  • 0
    @ 2024-12-24 9:59:18

    C :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct worker
    {
    	int num;
    	char name[11];
    	int age;
    };
    
    int cmp(const void *pa,const void *pb)
    {
    	struct worker* a=(struct worker*)pa;
    	struct worker* b=(struct worker*)pb;
    	if(a->age!=b->age)
    		return a->age-b->age;
    	if(a->num!=b->num)
    		return a->num-b->num;
    	return strcmp(a->name,b->name);
    }
    
    int main ()
    {
    	struct worker w[30];
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		for(int i=0;i<n;i++)
    			scanf("%d%s%d",&w[i].num,w[i].name,&w[i].age);
    		qsort(w,n,sizeof(struct worker),cmp);
    		n=(n>3?3:n);
    		for(int i=0;i<n;i++)
    			printf("%d %s %d\n",w[i].num,w[i].name,w[i].age);
    	}
    }
    

    C++ :

    #include <iostream>
    
    #include <vector>
    
    #include <string>
    
    #include <algorithm>
    
    using namespace std;
    
    
    
    struct staff{
    
        int id;
    
        string name;
    
        int age;
    
    };
    
    
    
    bool comp(staff a,staff b){
    
        if(a.age!=b.age){
    
            return a.age<b.age;
    
        }
    
        else if(a.id!=b.id){
    
            return a.id<b.id;
    
        }
    
        else{
    
            return a.name<b.name;
    
        }
    
    }
    
    
    
    int main(int argc,char* argv[]){
    
        //freopen("input.txt","r",stdin);
    
        vector<staff> v;
    
        staff *p;
    
        int n;
    
        while(cin>>n){
    
            v.resize(0);
    
            while(n--){
    
                p = new staff;
    
                cin>>p->id>>p->name>>p->age;
    
                v.push_back(*p);
    
            }
    
            sort(v.begin(),v.end(),comp);
    
            for(int i=0;i<3&&i<v.size();i++){
    
                cout<<v[i].id<<" "<<v[i].name<<" "<<v[i].age<<endl;
    
            }
    
        }
    
        return 0;
    
    }
    
    

    Java :

    import java.util.PriorityQueue;
    import java.util.Queue;
    import java.util.Scanner;
    
    public class Main{
        static class Person implements Comparable<Person> {
            String id;
            String name;
            int age;
    
            Person(String id, String name, int age) {
                this.id = id;
                this.name = name;
                this.age = age;
            }
    
            String getId() {
                return id;
            }
    
            String getName() {
                return name;
            }
    
            int getAge() {
                return age;
            }
    
            @Override
            public int compareTo(Person o) {
                if (age > o.age)
                    return 1;
    
                if (age == o.age && Integer.valueOf(id) > Integer.valueOf(o.id))
                    return 1;
    
                if (age == o.age && Integer.valueOf(id) > Integer.valueOf(o.id) && name.compareTo(o.name) == 1)
                    return 1;
                return -1;
            }
        }
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while (in.hasNext()) {
                int n = in.nextInt();
                Queue<Person> queue = new PriorityQueue<Person>();
                for (int i = 0; i < n; i++) {
                    queue.add(new Person(in.next(), in.next(), in.nextInt()));
                }
    
                for (int i = 0; i < Math.min(n, 3); i++) {
                    Person person = queue.poll();
                    System.out.println(person.getId() + " " + person.getName() + " " + person.getAge());
                }
            }
        }
    }
    
    
    • 1

    信息

    ID
    1384
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者