博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
匈牙利算法---解决最大匹配问题
阅读量:5145 次
发布时间:2019-06-13

本文共 958 字,大约阅读时间需要 3 分钟。

这是一种用增广路求二分图最大匹配的算法。

讲解的很详细的博客:https://www.byvoid.com/blog/hungary/

至于基础知识,我就不多讲了。其实它就是一直在找出一条路径能把二分图的左半部分的其中一个未匹配节点和右半部分的其中一个未匹配节点加入到已经匹配的节点中去。这就是关键。那个博客讲的很详细了。看了之后都知道是具体情况。

下面我根据自己的理解实现了一下这个算法(DFS方式)。

 

#include
using namespace std;#define MAX_NUM 1024int Left=4;int Right=3;int vm[MAX_NUM];//节点对应的匹配节点int edge[MAX_NUM][MAX_NUM];//左右部分连接情况int count;bool isVisited[MAX_NUM];//每次找增广路的时候,都要对它进行重置int index=0;void init(){ memset(edge,0,sizeof(edge)); edge[0][4]=1; edge[0][6]=1; edge[1][6]=1;// edge[1][7]=1; edge[2][4]=1; edge[2][5]=1; edge[3][5]=1; edge[3][6]=1;}bool can(int m){ for(int i=Left;i
"<
<<" "; vm[m]=i; vm[i]=m; return true; } else { if(can(vm[i])) { vm[m]=i; vm[i]=m; cout<
<<"->"<
<<" "; return true; } } } } return false;}void main(){ memset(vm,-1,MAX_NUM); init(); for(int i=0;i

 

 

转载于:https://www.cnblogs.com/suncoolcat/p/3400466.html

你可能感兴趣的文章
使用PHP拆分中文字符串的方法(收藏) 小节
查看>>
win10每次开机都显示“你的硬件设置已更改,请重启电脑……”的解决办法
查看>>
VMware环境和Window环境进行网络连接的问题
查看>>
macOS10.12允许所有来源设置
查看>>
C++有关 const & 内敛 & 友元&静态成员那些事
查看>>
函数积累
查看>>
python搜索引擎(转)
查看>>
关于height,line-height导致的样式混乱的问题
查看>>
《SEO实战密码》读后一点感受
查看>>
bzoj 4815 [Cqoi2017]小Q的表格——反演+分块
查看>>
Swift 入门之简单语法(六)
查看>>
shim和polyfill有什么区别
查看>>
Failed to load the JNI shared library “E:/2000/Java/JDK6/bin/..jre/bin/client/jvm.dll
查看>>
Zabbix3.4服务器的搭建--CentOS7
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>
夜太美---酒不醉--人自醉
查看>>
Java学习 · 初识 面向对象深入一
查看>>
源代码如何管理
查看>>
vue怎么将一个组件引入另一个组件?
查看>>