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

匈牙利算法

时间:2015-03-10 21:19:39      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

老是忘记这东西怎么写,在这里记一下。

在集合A和集合B中找出最大匹配。

 1 int find(int a)
 2 {
 3      for (int b = 0;b < B;b++)
 4      {
 5           if (line[a][b] && !vis[b])
 6           {
 7                vis[b] = 1;
 8                if (from[b] == -1 || find(from[b]))
 9                {
10                     from[b] = a;
11                     return true;
12                }
13           }
14      }
15      return false;
16 }
17 
18 // 调用
19 
20 for (int a = 0;a < A;a++)
21 {
22      memset(vis, 0, sizeof(vis));
23      if (find(a)) ans++;
24 }

 

匈牙利算法

标签:

原文地址:http://www.cnblogs.com/lightning34/p/4326864.html

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