二分最大匹配 匈牙利算法

http://blog.csdn.net/dark_scope/article/details/8880547

 1 bool find(int x){
 2     int i,j;
 3     for (j=1;j<=m;j++){    //扫描每个妹子
 4         if (line[x][j]==true && used[j]==false)      
 5         //如果有暧昧并且还没有标记过(这里标记的意思是这次查找曾试图改变过该妹子的归属问题,但是没有成功,所以就不用瞎费工夫了)
 6         {
 7             used[j]=1;
 8             if (girl[j]==0 || find(girl[j])) { 
 9                 //名花无主或者能腾出个位置来,这里使用递归
10                 girl[j]=x;
11                 return true;
12             }
13         }
14     }
15     return false;
16 }
17 for (i=1;i<=n;i++)
18 {
19     memset(used,0,sizeof(used));    //这个在每一步中清空
20     if find(i) all+=1;
21 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。