1183:病人排队 java
病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:
1.老年人(年龄 >= 60岁)比非老年人优先看病。
2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
3.非老年人按登记的先后顺序看病。
【输入】
第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。
【输出】
按排好的看病顺序输出病人的ID,每行一个。
【输入样例】
5
021075 40
004003 15
010158 67
021033 75
102012 30
【输出样例】
021033
010158
021075
004003
102012
下面展示一些 内联代码片
。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner input =new Scanner (System.in);
int n=input.nextInt();
Patient [] patient =new Patient[n];
for(int i=0;i<n;i++){
patient[i]=new Patient();
}
Patient patien=new Patient();
int t = 0;
for(int i=0;i<n;i++) {
patient[i].id= input.next();
patient[i].age= input.nextInt();
patient[i].que=i;
}
for(int i=0;i<n-1;i++) {
for(int j=i+1;j<n;j++) {
if(patient[i].age>=60&&patient[i].age<patient[j].age) { //大于60 ago相等
patien=patient[i];
patient[i]=patient[j];
patient[j]=patien;
else if(patient[i].age==patient[j].age&&patient[i].que>patient[j].que){
patien=patient[i];
patient[i]=patient[j];
patient[j]=patien;
}
}
}
for(int i=0;i<n;i++) { //输出 ago>60
if(patient[i].age>=60) {
System.out.println(patient[i].id);
}
}
for(int i=0;i<n;i++) { //输出 ago<60
if(patient[i].age<60) {
System.out.println(patient[i].id);
}
}
}
}
class Patient{ //定义一个Patien 类
public String id;
public int age;
public int que;
}
AC这到提还是有点。。。感觉自己太垃圾了