Python递归解决AOE网络最长路关键路径的问题
2015-04-16 15:28
1381 查看
Python递归解决AOE网络最长路关键路径的问题
一鼓作气,再来一发这是某同学在某公司的宣讲会中笔试部分的一题,如下图:
如图:每一个项目都有完成时间和若干个前置条件,求总项目(或每一个项目)的最短完成时间。
上代码:
class Pro: def __init__(self,pro_id,require_time,previous,pro_list): self.pro_id = pro_id self.require_time = require_time self.previous = previous #self.status = False pro_list.append(self) # def Test(self): # for item in self.previous: # if pro_list[item].status == False: # return False # return True def ShowSelf(self): print self.id,self.require_time,self.previous,#self.status, # def Pro_Finish(self): # self.status = True def run(self): total = 0 tmp = [] if self.pro_id == 0: return 0 a = len(self.previous) for x in range(a): tmp.append(pro_list[self.previous[x]].run() + self.require_time) print tmp total = max(tmp) print total return total pro_list = [] pro_0 = Pro(0, 0, [0], pro_list) # pro_0.status = True #init the pro_list pro_1 = Pro(1, 4, [0], pro_list) pro_2 = Pro(2, 3, [1], pro_list) pro_3 = Pro(3, 2, [1], pro_list) pro_4 = Pro(4, 5, [2], pro_list) pro_5 = Pro(5, 3, [3,4,8], pro_list) pro_6 = Pro(6, 1, [4], pro_list) pro_7 = Pro(7, 3, [5,6], pro_list) pro_8 = Pro(8, 5, [1], pro_list) pro_9 = Pro(9, 4, [7], pro_list) total_time = pro_9.run() #此处为总项目,也可以是单个项目 print "Total_time:",total_time运行结果:
[4]
4
[6]
6
[4]
4
[7]
7
[12]
12
[4]
4
[9]
9
[9, 15, 12]
15
[4]
4
[7]
7
[12]
12
[13]
13
[18, 16]
18
[22]
22
Total_time: 22
相关文章推荐
- AOE网络,最长路关键路径的学习
- AOE网络的关键路径问题
- Python实现AOV网络——拓扑排序,AOE网络——关键路径
- 解决python3 网络请求路径包含中文的问题
- 使用Python来解决卡诺塔即递归问题
- 解决python3 网络请求路径包含中文
- Python调用不在同一个文件夹下的Python程序,并且如何解决pyinstaller打包路径问题
- python获取文件绝对路径解决找不到文件句柄的问题实例(readConfig.py)V1.2
- 如何解决python不支持中文路径的问题?
- 狄克斯特拉算法,解决加权最短路径问题--python实现
- 递归显示文件夹下的所有目录(带绝对路径):并且解决中文乱码问题
- 经典递归解决汉诺塔问题 python实现
- python3网络编程乱码问题解决
- python3下 解决cv2读取中文路径问题
- UOJ#9 浅谈在线仙人球嵌套动态网络路径剖分优化的分支定界贪心剪枝启发式迭代加深人工智能搜索决策算法解决问题
- 解决python-opencv中路径不能读中文的问题
- 网络计划——关键路径相关问题
- 解决python模块调用时代码中使用相对路径访问的文件,提示文件不存在的问题
- python递归解决经典汉若塔问题
- 编程过程中遇到的python问题与解决方法_来自网络