解決工作分配問題
有n份作業分配給n個人去完成,每人完成乙份作業。假定第i個人完成第j份作業需要花費cij時間,cij>0,1≦i,j≦n。試設計乙個回溯演算法,將n份作業分配給n個人完成,使得總花費時間最短。
首先,計算工人和任務的所有組合方式,然後對於每一種組合方式,挑選出時間最短的一種,這裡呼叫了python函式中的permutations全排列函式,返回工人和人物的所有可能的排列。
cost =
[[1,2,3,4,5],
[3,2,5,4,1],
[9,6,5,4,2],
[2,8,4,6,7],
[4,8,6,5,3]
]
矩陣元素表示第i個工人完成第j個任務需要的時間
def gettime(n,cij=cost):
index = pt(range(n),n)
task = 100
for c in index:
temp = 0
for i in range(n):
temp += cij[i]
[c[i]
]if temp < task:
task = temp
real_task = c
return task, real_task
task, real_task=gettime(len(cost))
為每個工人分配任務
print(
for i in range(len(real_task)):
print(
"第{}個工人對應的任務為第{}個".format(i+1,real_task[i]+1))
5 2 工作分配問題 30分
設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。輸入格式 輸入資料的第一行有1 個正整數n 1 n 20 接下來的n行,每行n個數,表示工作費用。輸出格式 將計算出的最小總費用輸出到螢幕。輸...
工作分配問題
問題 設有n件工作分配給n個人,將工作i分配給第j個人所需的菲傭為cij,試設計乙個演算法,為每乙個人分配一件不同的工作,並使總費用達到最小。輸入 第一行有乙個正整數n,接下來n行,每行n個數,表示工作費用。輸入 最小總費用 例子 輸入 3 10 2 3 2 3 4 3 4 5 輸出 9 inclu...
工作分配問題
時間限制 1 sec 記憶體限制 128 mb 提交 10 解決 7 您該題的狀態 已完成 提交 狀態 討論版 設有n件工作分配給n個人,將工作i分配給第j個人費用為cij,為每個人分配一件不同的工作,對於給定的工作費用,計算最佳工作分配方案,使得中費用達到最小。第一行有1個正整數 1 n 20 接...