例子:m个男生,n个女生
用line[m][n]代表n,m是否能配对
used[n]代表n是否被占有了。
match[n]代表n个女生的匹配对象
核心代码:
bool found(int x)
{
for(int i=0;i<n;i++)
{
if(line[x][i]&&!used[i])
{
used[i]=1;
if(match[i]==0||found(i))
{
match[i]=x;
return true;
}
}
}
return 0;
}
注意:主函数每次判定found(i)时,要将used[n]还原。memset(used,0,sizeof(used));
二分匹配的详细介绍:
http://blog.youkuaiyun.com/thundermrbird/article/details/52231639