一、题目链接
http://noi.openjudge.cn/ch0110/03/
二、解题思路(Java)
三、解题思路(C++)
四、Java程序
import java.util.Arrays;
import java.util.Scanner;
class Student implements Comparable<Student> {
String name;
int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
@Override
public int compareTo(Student o) {
if (o.score == this.score) {
return this.name.compareTo(o.name);
}
return o.score > this.score ? 1 : -1;
}
@Override
public String toString() {
return name + " " + score;
}
}
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
Student[] students = new Student[n];
String name;
int score;
for (int i = 0; i < n; i++) {
name = input.next();
score = input.nextInt();
students[i] = new Student(name, score);
}
Arrays.sort(students);
for (Student stu : students) {
System.out.println(stu.toString());
}
}
}
五、C++程序
#include <iostream>
#include <algorithm>
using namespace std;
struct student
{
string name;
int score;
};
int cmp(student x, student y)
{
if (x.score == y.score)
{
return x.name < y.name;
}
return x.score > y.score;
}
int main()
{
int n;
cin >> n;
student stu[n];
int i;
for (i = 0; i < n; i++)
{
cin >> stu[i].name;
cin >> stu[i].score;
}
sort(stu, stu + n, cmp);
for (i = 0; i < n; i++)
{
cout << stu[i].name << " " << stu[i].score << endl;
}
return 0;
}