病人排队

该程序设计问题要求根据年龄和登记顺序为病人安排看病顺序。老年人优先,并按年龄降序排列,同龄则按登记顺序。输入包括病人ID和年龄,输出为排序后的病人ID列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:
1.老年人(年龄 >= 60岁)比非老年人优先看病。
2.老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
3.非老年人按登记的先后顺序看病。
【输入】
第1行,输入一个小于100的正整数,表示病人的个数;
后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。
【输出】
按排好的看病顺序输出病人的ID,每行一个。
样例输入 Copy

5
021075 40
004003 15
010158 67
021033 75
102012 30
样例输出 Copy

021033
010158
021075
004003
102012

#include<bits/stdc++.h>
using namespace std;
struct v
{
   
	string a;
	int b;
	int c;
} b,c[101],d[101];
int a,lc=0,nc=0,cc,z;
char u[1000];
### 实现病人排队系统的 Python 代码 为了实现一个完整的病人排队系统,在此提供一种基于优级排序的方法。考虑到病人的年龄作为优条件之一,当病人的年龄大于等于60岁时赋予更高的优权[^2]。 ```python def priority_key(patient_info): age = int(patient_info[1]) if age >= 60: return (-age, patient_info[2], patient_info[0]) # 负数使较大年龄排在前面 else: return (age, patient_info[2], patient_info[0]) n = int(input()) patients = [] for _ in range(n): patients.append(list(input().split())) # 排序逻辑考虑到了年龄因素以及原始排队顺序 patients.sort(key=priority_key) # 输出处理后的结果 for patient in patients: print(patient[0]) ``` 上述代码实现了对病人信息按特定规则进行排序的功能。这里定义了一个`priority_key`函数用于自定义排序键,其中不仅包含了对于年龄的判断还保留了原有的排队序列以确保相同条件下到者优。 另外,针对更复杂的场景如加入队列(`enqueue`)、离开队列(`dequeue`)等功能,则可以引入队列数据结构来管理等待中的患者名单[^3]: ```python from collections import deque class PatientQueue: def __init__(self): self.queue = deque() def enqueue(self, patient_id, age, order_time): new_patient = [patient_id, str(age), str(order_time)] self.queue.append(new_patient) self.reorder_queue() def dequeue(self): if not self.is_empty(): return self.queue.popleft()[0] def reorder_queue(self): temp_list = list(self.queue) temp_list.sort(key=priority_key) self.queue.clear() for item in temp_list: self.queue.append(item) def is_empty(self): return len(self.queue) == 0 # 使用示例 pq = PatientQueue() pq.enqueue('021033', 75, 'first') pq.enqueue('010158', 45, 'second') print(pq.dequeue()) # 应该打印出较老患者的 ID ``` 这段扩展版本展示了如何创建一个类 `PatientQueue` 来封装与病人队伍有关的操作方法,并通过内部调用之前提到过的 `priority_key()` 函数来进行重新排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值