2024-11-07 17:24:47 +08:00

53 lines
1.3 KiB
Python

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__":
主函数()