查找年龄问题。在当前疫情形势下,在医院收治的感染患者中利用分治法设 计查找病患序列中的年龄最大和最小的患者,用户自己输入患者信息; 提示:利用递归思想的分治法思路。
时间: 2024-02-24 08:53:36 浏览: 78
算法思想——递归与分治
好的,根据您的要求,我可以编写一个程序,使用分治法递归查找用户输入的病患序列中的年龄最大和最小的患者。
下面是代码实现:
```python
def find_min_max_age(patients):
# 如果病患序列为空,返回 None
if len(patients) == 0:
return None
# 如果病患序列只有一个元素,返回该元素的年龄
if len(patients) == 1:
age = patients[0]["age"]
return (age, age)
# 如果病患序列有多个元素,使用分治法查找最小和最大年龄
mid = len(patients) // 2
left_min, left_max = find_min_max_age(patients[:mid])
right_min, right_max = find_min_max_age(patients[mid:])
return (min(left_min, right_min), max(left_max, right_max))
# 主程序
n = int(input("请输入病患数量:"))
patients = []
for i in range(n):
name = input("请输入病患姓名:")
age = int(input("请输入病患年龄:"))
patients.append({"name": name, "age": age})
min_age, max_age = find_min_max_age(patients)
print("年龄最小的患者是 %d 岁,年龄最大的患者是 %d 岁。" % (min_age, max_age))
```
在上面的代码中,我们首先让用户输入病患数量,然后使用一个循环让用户逐个输入每个病患的姓名和年龄,并将其保存在一个列表中。接下来,我们调用 `find_min_max_age` 函数查找病患序列中的最小和最大年龄,并将结果输出。
您可以运行上面的代码,按照提示逐个输入每个病患的姓名和年龄,程序会自动计算出病患序列中的年龄最小和最大的患者,并将结果输出。
希望这个回答能够帮助您解决问题!
阅读全文