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