document.write('
本题的主要思路如下:对所有的分区进行遍历,同时用一个变量dIndex记录上次分配磁盘的下标,
初始化为0;对于每个分区,从上次分配的磁盘开始继续分配,如果没有足够的空间,则顺序找其他
的磁盘,直到找到合适的磁盘为止,进行分配;如果找不到合适的磁盘,则分配失败,实现代码如
下:
def is_allocable(d,p):
dIndex=0 #磁盘分区下标
i=0
while i<len(p):
#找到符合条件的磁盘
while dIndex<len(d) andp[i]>d[dIndex]:
dIndex+=1
#没有可用的磁盘
if dIndex>=len(d):
return False
#给分区分配磁盘
d[dIndex]-=p[i]
i+=1
return True
if __name__=="__main__":
d=[120,120,120] #磁盘
p=[60,60,80,20,80] #分区
if is_allocable(d,p):
print "分配成功"
else:
print "分配失败"
程序的运行结果为:
分配成功
算法性能分析:
这种方法使用了双重循环,因此,时间复杂度为O(MN)。
');