資源簡介
用python3.1寫的銀行家算法,主要用了類,數據類型為列表
代碼片段和文件信息
#coding=utf-8
import?sys
class?Banker():
????def?__init__(selfmn):
????????self.m=m
????????self.n=n
????def?safe(self):
????????work=[]
????????finish=[]
????????f_num=0
????????for?i?in?range(n):
????????????ava=[]
????????????for?j?in?range(m):
????????????????ava.append(available[j])
????????????work.append(ava)
????????‘‘‘print(work)‘‘‘
????????????
????????for?i?in?range(n):
????????????finish.append(0)
????????????
????????for?i?in?range(n):
????????????if?finish[i]==0:
????????????????for?j?in?range(m):
????????????????????if?need[i][j]<=work[i][j]:
????????????????????????work[i][j]?+=allocation[i][j]
????????????????????????finish[i]=1?#有問題!
????????????????????????f_num?+=1???#經i、j循環后值為15
????????????????????else:????????????????????????
????????????????????????break
????????‘‘‘print(f_num)‘‘‘
????????if?f_num==n*m:
????????????return?1
????????else:
????????????return?0
????????
????def?check(self):
????????flag=1
????????for?i?in?range(n):
????????????for?j?in?range(m):
????????????????#try:
????????????????if?request[i][j]<=need[i][j]?and?request[i][j]<=available[j]:
????????????????????#‘int‘?object?is?not?iterable可迭代的
????????????????????available[j]?-=request[i][j]
????????????????????allocation[i][j]?+=request[i][j]
????????????????????need[i][j]?-=request[i][j]????????????????????????
????????????????else:
????????????????????‘‘‘print(‘ok‘)‘‘‘
????????????????????flag=0
????????????????????break
????????????????
????????if?flag==0:
????????????print(‘分配失敗!‘)
????????????
????????safe=Banker.safe(self)
????????‘‘‘print(safe)‘‘‘
????????#safe()?takes?exactly?1?positional?argument?(0?given)需加self?
評論
共有 條評論