1. 程式人生 > >第五章上機實踐報告

第五章上機實踐報告

1.實踐問題:

工作分配問題

2.問題描述:

設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 。 設計一個演算法,對於給定的工作費用,為每一個人都分配1 件不同的工作,並使總費用達到最小。

3.演算法描述:

1)解空間:排列樹

2)測試樣例的解空間樹:

3)剪枝方法:

void Backtrack(int t){
    for(int k=1;k<=n;++k){
        if(!b[k]){
            b[k]=1;
            sum+=p[k][t];
            if(t==n){
                
if(sum<best) best=sum; } else if (sum<best) Backtrack(t+1); sum-=p[k][t]; b[k]=0; } } }

4.心得體會:

和同伴想了好久才想出一個標記防止重複選擇,回溯法的應用還不夠熟練,怕剪枝方法遺漏導致演算法執行時間過久。