任務分配問題 回溯演算法

2021-08-09 17:13:11 字數 1196 閱讀 8639

要求把n項任務分配給

n個人,每個人完成每項任務的成本不同,要求分配成本最小的最優分配方案。

**:#include

#define n 205

using namespace std;

int c[n][n];

int x[n];

int bestm[n];

int n;

int bmin=999999999;

int sum(int k)

int temp=0;

for(int i=1;i<=k;i++)

temp+=c[i][x[i]];

return temp;

void backtrack(int t)

if (t==n){

int ans=sum(n);

if(ansbmin=ans;

for(int i=1;i<=n;i++)

bestm[i]=x[i];

else

for (int i=t;i<=n;i++) {

swap(x[t], x[i]);

if(sum(t)backtrack(t+1);

swap(x[t], x[i]);

int main()

cin>>n;

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

cin>>c[i][j];

for(int i=1;i<=n;i++)

x[i]=i;

backtrack(1);

cout最優分配成本:

"<

cout最優成本方案:

"<

for(int i=1;i<=n;i++)

cout<

"個人完成第

"項任務

"<

return 0;

9 2 7 8

6 4 3 7

6 8 1 8

7 6 9 4

50 43 1 58 60

87 22 5 62 71

62 98 97 27 38

56 57 96 73 71

92 36 43 27 95

截圖:

任務分配問題

任務分配問題是在加權 二分圖中尋找最大 或最小 加權匹配的問題。隱藏 分為以下幾類 這些問題都是組合優化的研究物件。有一些員工要完成一些任務。各個員工完成不同任務所花費的時間都不同。每個員工只分配一項任務。每項任務只被分配給乙個員工。怎樣分配員工與任務以使所花費的時間最少?婚配問題 有一些男人和一些...

任務分配問題

題目要求 輸入 第一行是操作員的人數n 4 輸出 完成所有任務的最短時間。測試用例 test input expected output time limitation memory limitation extra process number test case 1 view plain 4 3...

演算法題 任務分配問題 匈牙利演算法

一 問題描述 問題描述 n個人分配n項任務,乙個人只能分配一項任務,一項任務只能分配給乙個人,將一項任務分配給乙個人是需要支付報酬,如何分配任務,保證支付的報酬總數最小。問題數學描述 二 例項分析 窮舉法 在講將匈牙利演算法解決任務問題之前,先分析幾個具體例項。以3個工作人員和3項任務為例項,下圖為...