E题目答案
This commit is contained in:
parent
b6ef8f4aef
commit
f95f1446bf
53
操作系统/题目5.py
Normal file
53
操作系统/题目5.py
Normal file
@ -0,0 +1,53 @@
|
||||
def 安全检查(可用, 最大需求, 分配, 进程):
|
||||
n = len(进程)
|
||||
工作 = 可用.copy()
|
||||
完成 = [False] * n
|
||||
安全序列 = []
|
||||
|
||||
需求 = []
|
||||
for i in range(n):
|
||||
需求.append([最大需求[i][j] - 分配[i][j] for j in range(3)])
|
||||
|
||||
while True:
|
||||
找到 = False
|
||||
for i in range(n):
|
||||
if not 完成[i] and all(需求[i][j] <= 工作[j] for j in range(3)):
|
||||
for j in range(3):
|
||||
工作[j] += 分配[i][j]
|
||||
完成[i] = True
|
||||
安全序列.append(进程[i])
|
||||
找到 = True
|
||||
break
|
||||
|
||||
if not 找到:
|
||||
break
|
||||
|
||||
return all(完成), 安全序列
|
||||
|
||||
def 主函数():
|
||||
资源 = list(map(int, input().split()))
|
||||
|
||||
进程 = []
|
||||
最大需求 = []
|
||||
分配 = []
|
||||
|
||||
for _ in range(4):
|
||||
行 = input().split()
|
||||
进程.append(行[0])
|
||||
最大需求.append(list(map(int, 行[1:4])))
|
||||
分配.append(list(map(int, 行[4:7])))
|
||||
|
||||
可用 = 资源.copy()
|
||||
for i in range(4):
|
||||
for j in range(3):
|
||||
可用[j] -= 分配[i][j]
|
||||
|
||||
安全状态, 序列 = 安全检查(可用, 最大需求, 分配, 进程)
|
||||
|
||||
if 安全状态:
|
||||
print(" ".join(序列))
|
||||
else:
|
||||
print("false")
|
||||
|
||||
if __name__ == "__main__":
|
||||
主函数()
|
Loading…
x
Reference in New Issue
Block a user