请问这儿有没有人知道图论中间的匈牙利算法啊?

rryqsh 2004-01-02 06:03:01
请教各位达人,你们是否在大学时期学过图论?
里面有一个很经典的寻找最大匹配的匈牙利算法你们也应该知道吧?
我们老师给我们布置的期末考试实验里面就是编写一个匈牙利算法的程序,可是我们都不知道,或者不能编出一个很精彩的程序来,请教各位达人你们能不能把你们那个时候的程序给我们看看啊?

小弟在这儿拜谢了!!!!!
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rryqsh 2004-01-10
  • 打赏
  • 举报
回复
nasi00(伤心1999) 谢谢你的程序,可是那个不是匈牙利算法啊

turnerbook(不可) 我不是学数学的,我学的是软件工程,因为有图论,所以……

好了,谢谢大家的帮助,结帖,给分
YFLK 2004-01-06
  • 打赏
  • 举报
回复
程序的意义不清楚
观注中!
nasi00 2004-01-06
  • 打赏
  • 举报
回复
从我们ACM的模版库里找了一个二部图匹配的算法,因为不是我写的,所以也不知道是不是匈牙利算法…… 我记得好像是吧…… 忘记了,呵呵 -_-b

int Bipartite(bool vc [][MAX],int nv1,int nv2) {
int i, j, x, n;
int q[MAX], prev[MAX], qs, qe;
int vm1[MAX], vm2[MAX];
n = 0;
for( i = 0; i < nv1; i++ ) vm1[i] = -1;
for( i = 0; i < nv2; i++ ) vm2[i] = -1;
for( i = 0; i < nv1; i++ ) {
for( j = 0; j < nv2; j++ ) prev[j] = -2;
qs = qe = 0;
for( j = 0; j < nv2; j++ ) if( vc[i][j] ) {
prev[j] = -1;
q[qe++] = j;
}
while( qs < qe ) {
x = q[qs];
if( vm2[x] == -1 ) break;
qs++;
for( j = 0; j < nv2; j++ )
if( prev[j] == -2 && vc[vm2[x]][j] ) {
prev[j] = x;
q[qe++] = j;
}
}
if( qs == qe ) continue;
while( prev[x] > -1 ) {
vm1[vm2[prev[x]]] = x;
vm2[x] = vm2[prev[x]];
x = prev[x];
}
vm2[x] = i;
vm1[i] = x;
n++;
}
return n;
}

turnerbook 2004-01-05
  • 打赏
  • 举报
回复
你是学数学的么? rryqsh (日日野晴矢)
arden1019 2004-01-05
  • 打赏
  • 举报
回复
等待算法星星......
rryqsh 2004-01-03
  • 打赏
  • 举报
回复
可是我已经没有时间来找这本书了啊,各位救命啊!
hwndhwnd 2004-01-03
  • 打赏
  • 举报
回复
只听说过匈牙利命名法。。。。。。
ecantona 2004-01-02
  • 打赏
  • 举报
回复
C# WINDOWs书中有

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧