程式設計 C 回溯演算法 排列樹 工作分配問題

2022-05-18 10:02:10 字數 1426 閱讀 5063

問題描述:設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 。試設計乙個演算法,為每乙個人都分配1 件不同的工作,並使總費用達到最小。設計乙個演算法,對於給定的工作費用,計算最佳工作分配方案,使總費用達到最小。

由檔案input.txt給出輸入資料。第一行有1 個正整數n (1≤n≤20)。接下來的n行,每行n個數,表示工作費用。將計算出的最小總費用輸出到檔案output.txt。例如:

input.txt             output.txt

3                    9

10 2 3

2 3 4

3 4 5

源程式**

1  #include 2  #include 3

using

namespace

std;

45 ifstream fin("

f:\\gongzuofenpei\\input.txt");

6 ofstream fout("

f:\\gongzuofenpei\\output.txt");

7int **cost;

8bool *body;

9int

cur_cost;

10int

min_cost;

11int

n;12

13int

output()

1418

19int backtrack(int

t)20

26else

2742}43

}44return1;

45}4647

intmain()

48

增加輸出一種分配方法的**如下:

改進的**

1 #include 2 #include 3

using

namespace

std;

45 ifstream fin("

f:\\gongzuofenpei\\input.txt");

6 ofstream fout("

f:\\gongzuofenpei\\output.txt");

7int **cost;

8bool *body;

9int *best;

10int *test;

11int

cur_cost;

12int

min_cost;

13int

n;14

15int

output()

1622

23int backtrack(int

t)24

33else

3449}50

}51return1;

52}5354

intmain()

55

python回溯演算法全排列 回溯演算法 全排列

1 問題描述 對於給定的集合 a,其中的 n 個元素互不相同,如何輸出這 n 個元素的所有排列 全排列 時間複雜度為o 2n 例如 全排列 2 回溯演算法思想 這裡以 a 為例,來說明全排列的生成方法,對於這個集合,其包含 3 個元素,所有的排列情況有 3 6 種,對於每一種排列,其第乙個元素有 3...

回溯演算法 全排列

1 問題描述 對於給定的集合 a,其中的 n 個元素互不相同,如何輸出這 n 個元素的所有排列 全排列 時間複雜度為o 2n 例如 全排列 2 回溯演算法思想 這裡以 a 為例,來說明全排列的生成方法,對於這個集合,其包含 3 個元素,所有的排列情況有 3 6 種,對於每一種排列,其第乙個元素有 3...

回溯法之排列樹

參考文章 當所給問題是從n個元素的集合s中找出滿足某種性質的排列時,解空間為排列樹。例如 旅行售貨員問題 回溯法搜尋排列樹的描述為 void backtrack int t include include include include include include using namespace...