工作分配問題

2021-09-19 08:59:28 字數 1008 閱讀 5566

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

3

10 2 3

2 3 4

3 4 5

sample output

9
hint

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 個正整數...