一鼓作氣,再來一發
這是某同學在某公司的宣講會中筆試部分的一題,如下圖:
如圖:每乙個專案都有完成時間和若干個前置條件,求總專案(或每乙個專案)的最短完成時間。
上**:
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
# 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):
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]
22total_time: 22
活動網路 AOE網路
aoe網路 如果在有向無環圖中用有向邊表示乙個工程中的各項活動,用有向邊上的權值表示活動的持續時間,用頂點表示事件,則這種有向圖叫做用邊表示活動的網路,簡稱aoe網路。aoe網路的用途 1 完成整個工程至少需要多長時間 2 為縮短工程所需的時間,應加快哪些活動 關鍵路徑 完成整個工程所需的時間取決於...
AOE網路和關鍵路徑
include define inf 99999999 using namespace std aoe 在現代化管理中,人們常用有向圖來描述和分析一項工程的計畫和實施過程,乙個工程常被分為多個 小的子工程,這些子工程被稱為活動 activity 在帶權有向圖中若以頂點表示事件,有向邊表示 活動,邊上...
AOE網路的關鍵路徑問題
關於aoe網路的基本概念可以參考 資料結構 或者search一下就能找到,這裡不做贅述。尋找aoe網路的關鍵路徑目的是 發現該活動網路中能夠縮短工程時長的活動,縮短這些活動的時長,就可以縮短整個工程的時長。因此,尋找關鍵路徑就是尋找關鍵活動。接下來開始尋找乙個工程中的關鍵路徑 關鍵活動 尋找關鍵路徑...