第一个算法问题:稳定匹配
1962年, David Gale和Lloyd Shapley两人提出一个稳定匹配问题。n个男人和n个女人匹配结婚,每个男人和每个女人都有一个自己的优先表,然后进行如下,算法最后得到一个稳定匹配。
算法的伪码描述:
1、从男人中选出一个自由的且未向所有女人求过婚的m(其实两者限制前面即可),然后m按照他的优先表进行求婚。
2、令w是m可选优先级最高的,然后向她求婚。如果,m目前没有男友,那么(m,w)就约会。如果m有男友m1,则比较m与m1在w得优先表上的排名进行选择。
3、重复1、2直至所有人都已经找到了自己的伴侣。
代码如下:
假设是7男7女的匹配问题。
#include<bits/stdc++.h>
using namespace std;
#define NUM 7
#define IS -1 //如果某女士w单身,IS为-1
bool oldvsnew(int lady[
using namespace std;
#define NUM 7
#define IS -1 //如果某女士w单身,IS为-1
bool oldvsnew(int lady[