标签:+= track 一个人 rac 跳过 题目 不同 highlight wap
1. 实践题目 :
工作分配问题
2. 问题描述 :
设有n件工作分配给n个人,将工作i分配给第j个人所需的费用为cij,对于给定的工作费用,为每一个人都分配1 件不同的工作,设计一个算法,并使总费用达到最小。
3. 算法描述 :
1)解空间 : 其解空间为一颗排列树,类似于旅行售货员问题的解空间。
2)解空间树 : 当n = 3时,其解空间树如下
(A)
| 1
(B)
2 / 3| \ 4
(C) (D) (E)
3 / \ 4 2 / \ 4 2 / \ 3
(F) (G) (H) (I) (J) (K)
4 | | 3 4 | | 2 3 | | 2
(L) (M) (O) (P) (R) (S)
(四)剪枝函数:
for(int i=t; i<=n; i++){ if(bestf > nf){ //剪枝,仅当bestf > nf时才进入搜索,否则跳过 nf += fee[t][flag[i]]; swap(flag[t], flag[i]); Backtrack(t + 1); swap(flag[t], flag[i]); nf -= fee[t][flag[i]]; } }
标签:+= track 一个人 rac 跳过 题目 不同 highlight wap
原文地址:https://www.cnblogs.com/dalili/p/10165138.html