码迷,mamicode.com
首页 > 编程语言 > 详细

算法第五章实践

时间:2018-12-23 19:32:57      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:了解   心得   backtrack   track   整数   需要   回溯   back   个人   

一 、 实践题目

 

工作分配问题

 

二 、 问题描述

 

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

 

输入格式:

 

输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。

 

输出格式:

 

将计算出的最小总费用输出到屏幕。

 

输入样例:

 

3

 

10 2 3

 

2 3 4

 

3 4 5

 

输出样例:

 

9

 

三 、算法描述

 

进行回溯,遍历左子树后回溯遍历右子树

 

if(cp+w[i][x[j]]<bestp)

 

         {

 

                  cp+=w[i][x[j]];

 

                  swap(i,j);

 

                  backtrack(i+1);

 

                  swap(i,j);

 

                  cp-=w[i][x[j]];

 

         }

 

四、心得体会

 

和队友讨论之后了解到需要进行剪枝,来实现更少的时间复杂度,可以把算法设计的更加周密。

 

算法第五章实践

标签:了解   心得   backtrack   track   整数   需要   回溯   back   个人   

原文地址:https://www.cnblogs.com/Wqxxxx--/p/10165062.html

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