葵司JAVA25_PAT 1015. 德才论 (25) JAVA

葵司JAVA25_PAT 1015. 德才论 (25) JAVA宋代史学家司马光在 资治通鉴 中有一段著名的 德才论 是故才德全尽谓之圣人 才德兼亡谓之愚人 德胜才谓之君子 才胜德谓之小人 凡取人之术 苟不得圣人 君子而与之 与其得小人 不若得愚人 现给出一批考生的德才分数 请根据司马光的理论给出录取排名

大家好,我是讯享网,很高兴认识大家。

宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”

现给出一批考生的德才分数,请根据司马光的理论给出录取排名。

输入格式:

输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。

随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。

输出格式:

输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

输入样例:

14 60 80

64 90

90 60

85 80

85 80

80 85

82 77

83 76

90 78

75 79

59 90

88 45

80 100

90 99

66 60

输出样例:

12

90 99

80 100

85 80

85 80

80 85

90 78

83 76

82 77

90 60

66 60

75 79

64 90

本题用java写会运行超时。

1.容器排序

importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;public classMainl {public static voidmain(String[] args) {

Scanner input= newScanner(System.in);intn,l,h;intsum;

n=input.nextInt();

l=input.nextInt();

h=input.nextInt();

String sto;intde;intcai;

List list1 = new ArrayList();

List list2 = new ArrayList();

List list3 = new ArrayList();

List list4 = new ArrayList();for(int i=0;i

sto=input.next();

de=input.nextInt();

cai=input.nextInt();

Stu stu= newStu(sto, de, cai);if(de>=h&&cai>=h){

list1.add(stu);

}if(de>=h&&cai=l){

list2.add(stu);

}if(de=l&&cai=l&&de>=cai){

list3.add(stu);

}if(de=l&&cai>=l&&de

list4.add(stu);

}

}long endTime =System.currentTimeMillis();

Collections.sort(list1);

Collections.sort(list2);

Collections.sort(list3);

Collections.sort(list4);

System.out.println(list1.size()+list2.size()+list3.size()+list4.size());for(int i=0;i

System.out.println(list1.get(i).sto+" "+list1.get(i).de+" "+list1.get(i).cai);

}for(int i=0;i

System.out.println(list2.get(i).sto+" "+list2.get(i).de+" "+list2.get(i).cai);

}for(int i=0;i

System.out.println(list3.get(i).sto+" "+list3.get(i).de+" "+list3.get(i).cai);


讯享网

}for(int i=0;i

System.out.println(list4.get(i).sto+" "+list4.get(i).de+" "+list4.get(i).cai);

}

}

}class Stu implements Comparable{

String sto;intde;intcai;public Stu(String sto, int de, intcai) {super();this.sto =sto;this.de =de;this.cai =cai;

}

@Overridepublic intcompareTo(Stu o) {//TODO Auto-generated method Stub

int result = 0;

result= -(de+cai-o.de-o.cai);//总分降序

if(0==result){

result= -(de-o.de);//德分降序//System.out.println("总分相同:"+de+cai+result);

if(0==result){

result= sto.compareTo(o.sto);//学号升序//System.out.println("德分相同:"+sto.compareTo(sto));

}

}returnresult;

}

}

2.数组排序

importjava.util.Arrays;importjava.util.Scanner;public classMoral1 {public static voidmain(String[] args) {

Scanner input= newScanner(System.in);intn,l,h;intsum;

n=input.nextInt();

l=input.nextInt();

h=input.nextInt();

String sto;intde;intcai;int st1=0,st2=0,st3=0,st4=0;

Stud[] stu1= new Stud[];

Stud[] stu2= new Stud[];

Stud[] stu3= new Stud[];

Stud[] stu4= new Stud[];for(int i=0;i

sto=input.next();

de=input.nextInt();

cai=input.nextInt();

Stud stu= newStud(sto, de, cai);if(de>=h&&cai>=h){

stu1[st1++] =stu;

}if(de>=h&&cai=l){

stu2[st2++] =stu;

}if(de=l&&cai=l&&de>=cai){

stu3[st3++] =stu;

}if(de=l&&cai>=l&&de

stu4[st4++] =stu;

}

}

Arrays.sort(stu1,0, st1);

Arrays.sort(stu2,0, st2);

Arrays.sort(stu3,0, st3);

Arrays.sort(stu4,0, st4);

System.out.println(st1+st2+st3+st4);for(int i=0;i

System.out.println(stu1[i].sto+" "+stu1[i].de+" "+stu1[i].cai);

}for(int i=0;i

System.out.println(stu2[i].sto+" "+stu2[i].de+" "+stu2[i].cai);

}for(int i=0;i

System.out.println(stu3[i].sto+" "+stu3[i].de+" "+stu3[i].cai);

}for(int i=0;i

System.out.println(stu4[i].sto+" "+stu4[i].de+" "+stu4[i].cai);

}

}

}class Stud implements Comparable{

String sto;intde;intcai;public Stud(String sto, int de, intcai) {super();this.sto =sto;this.de =de;this.cai =cai;

}

@Overridepublic intcompareTo(Stud o) {//TODO Auto-generated method Stub

int result = 0;

result= -(de+cai-o.de-o.cai);//总分降序

if(0==result){

result= -(de-o.de);//德分降序//System.out.println("总分相同:"+de+cai+result);

if(0==result){

result= sto.compareTo(o.sto);//学号升序//System.out.println("德分相同:"+sto.compareTo(sto));

}

}returnresult;

}

}

都是相同的结果

f452997124394a1e543e74212c21a696.png

小讯
上一篇 2025-03-31 16:41
下一篇 2025-03-28 11:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/31313.html