首页 > 编程语言 > 详细

匈牙利算法

时间:2015-03-10 21:17:24      阅读:290      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!