首页 > 其他 > 详细

员工分配工作(深度优先)

时间:2020-01-26 21:28:51      阅读:66      评论:0      收藏:0      [点我收藏+]

题意:公司分配N项工作给N个员工,每个员工只能被分给1项工作,每个人处理工作的时间不同。求完成所有工作所需的最少时间。

输入:第一行输入整数N,代表N个员工,员工编号从1到N(1<=N<=10)

    接下来输入一个N*N的二维矩阵task[N][N],其中task[i][j](0<=task[i][j]<=1000)代表第i项工作由j号员工完成所需的时间。

输出:输出一个整数,代表工作完成所有工作所需的最少时间。

样例:

输入:

6
10 11 12 11 9 11
11 9 10 13 11 12
12 10 11 10 13 9
9 14 9 10 10 11
10 10 9 11 12 11
10 7 10 10 10 8

输出:

54

dfs暴力深搜(深度优先)

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int task[15][15]; //
 5 bool used[15];
 6 int ans;
 7 int n;
 8 void dfs(int x,int t){
 9     if(x==n){
10         if(t<ans){
11             ans=t;
12         }
13         return;
14     }
15     for(int i=0;i<n;i++){
16         //判断员工是否被使用
17         if(!used[i]){
18             used[i]=true;
19             dfs(x+1,t+task[x][i]);
20             used[i]=false;
21         }
22     }
23 }
24 int main()
25 {
26     cin>>n;
27     for(int i=0;i<n;i++){
28         for(int j=0;j<n;j++){
29            cin>>task[i][j];
30         }
31     }
32     ans=200000;
33     //从第0行开始搜,刚开始花费时间为0
34     dfs(0,0);
35     cout<<ans;
36     return 0;
37 }

 

员工分配工作(深度优先)

原文:https://www.cnblogs.com/mld-code-life/p/12234839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!