time limit: 1000 ms memory limit: 65536 kib
submit
statistic
problem description
設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為 cij。試設計乙個演算法,為每乙個人都分配1 件不同的工作,並使總費用達到最小。
設計乙個演算法,對於給定的工作費用,計算最佳工作分配方案,使總費用達到最小。
input
輸入資料的第一行有1 個正整數n (1≤n≤20)。接下來的n行,每行n個數,表示工作費用。
output
將計算出的最小總費用輸出。
sample input
3sample output10 2 3
2 3 4
3 4 5
9hint
source
解題思路:
由於每個人都必須分配到工作,在這裡可以建乙個二維陣列c[i][j],用以表示i號工人完成j號工作所需的費用。給定乙個迴圈,從第1個工人開始迴圈分配工作,直到所有工人都分配到。為第i個工人分配工作時,再迴圈檢查每個工作是否已被分配,沒有則分配給i號工人,否則檢查下乙個工作。可以用乙個一維陣列x[j]來表示第j 號工作是否被分配,未分配則x[j]=0,否則x[j]=1。利用回溯思想,在工人迴圈結束後回到上一工人,取消此次分配的工作,而去分配下一工作直到可以分配為止。這樣,一直回溯到第1個工人後,就能得到所有的可行解。在檢查工作分配時,其實就是判斷取得可行解時的二維陣列的一下標都不相同,二下標同樣不相同。
#includeusing namespace std;
int n,cost=0;
int x[100],c[100][100];
void work(int i,int count)
cost+=c[i][i];
}work(1,0);
cout
}
工作分配問題
問題 設有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 接...
工作分配問題
problem description 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為 cij。試設計乙個演算法,為每乙個人都分配1 件不同的工作,並使總費用達到最小。設計乙個演算法,對於給定的工作費用,計算最佳工作分配方案,使總費用達到最小。input 輸入資料的第一行有1 個正整數...