實踐題目 (工作分配問題)
問題描述
7-2 工作分配問題 (20 分)
設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 。 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。
輸入資料的第一行有1 個正整數n (1≤n≤20)。接下來的n行,每行n個數,表示工作費用。
將計算出的最小總費用輸出到螢幕。
在這裡給出一組輸入。例如:
3
10 2 3
2 3 4
3 4 5
在這裡給出相應的輸出。例如:
9
演算法描述(包括解空間,畫出解空間樹,剪枝(約束函式或限界函式)方法描述)
4.具體**
#include#includeusing
namespace
std;
int arr[10005][10005];//
將第i工作工作分配給第j人需要的費用
int p[10005]; //
當前分配狀態
intn;
int best = 10005;//
最小總費用
int temp = 0;//
當前作業分配後的花費
void backtrack(int
dep)
}else
p[i] = 0;//
沒有分配
temp -=arr[dep][i];
} }}
}int
main()
}memset(p,
0,sizeof
(p));
backtrack(1);
cout
<< best
}
5.心得體會
在我的同伴打出這道題後,他非擦汗那個耐心得向我講解了其中的演算法與**含義,我對回溯法的應用有了更好的認識,希望自己打的時候能夠運用起來。
演算法第5章上機實踐報告
7 2 工作分配問題 20 分 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。輸入資料的第一行有1 個正整數n 1 n 20 接下來的n行,每行n個數,表示工作費用。將計算出的最小總費用輸...
演算法第4章實踐報告
實踐題目 程式儲存問題 問題描述 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。第一行是2 個正整...
演算法第5章上機實踐
1.實踐題目 工作分配問題 2.問題描述 7 2 工作分配問題 20 分 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。輸入資料的第一行有1 個正整數n 1 n 20 接下來的n行,每行n...