码迷,mamicode.com
首页 > 其他好文 > 详细

第五章实践

时间:2018-12-22 12:02:28      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:col   color   lse   bsp   image   else   不同   sum   需要   

一。实践题目

7-2 工作分配问题

二。问题描述

设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。

解空间:

技术分享图片

int Backtrack(int t)
{
    if(t>n && sum<Min){
        Min=sum;
        return Min;
    }
    else
    {
        for(int k=0;k<n;k++){
            if(b[k]==0){
        sum=sum+a[t-1][k];
        b[k]=1;
        if(sum<=Min) Backtrack(t+1);
        sum=sum-a[t-1][k];
        b[k]=0;
        }
        }
    }
}

约束函数:if(sum<=Min) 判断对比当前选择后的费用sum与之前记录的最小总费用Min

减枝:if(b[k]==0) 将已选择的物品记录,并在解空间中删除对应树枝。

四。心得体会

这次实践题目不仅需要对解空间清楚分析并写出其对应的回溯算法,更需要很好地减枝,将算法时间缩短,通过这次实践,能对回溯算法如何减枝有了更深的体会,以及如何全面减枝有了一定地训练。

第五章实践

标签:col   color   lse   bsp   image   else   不同   sum   需要   

原文地址:https://www.cnblogs.com/luzhibin/p/10159618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!