首页 > 编程语言 > 详细

Gale-Shplay算法(约会匹配问题)

时间:2020-06-22 09:02:58      阅读:149      评论:0      收藏:0      [点我收藏+]
 1 int womanPrefer[10][10],manPrefer[10][10];
 2 //womanPrefer[i][j]:i号女人第j喜欢的男人编号
 3 //manPrefer[i][j]:i号男人第j喜欢的女人编号
 4 vector<int>& GaleShplay(){
 5     int DatedMan=0;//已经脱单的男人
 6     int womanDated[10]={0};//womanDated[i]:第i个女人约会的对象(如果还没有对象默认是-1)
 7     int manDated[10]={0};//manDated[i]:第i个男人约会的对象(如果还没有对象默认是-1)
 8     for(int i=0;i<10;++i){
 9         womanDated[i]=-1;
10         manDated[i]=-1;
11     }
12     int womanPreferManNumber[10][10];//womanPreferManNumber[i][j]:i号女人对j号男人的排名(即i号女人喜欢的所有男人中,j号男人排名
13     //womanPreferManNumber[i][j]位)
14     for(int i=0;i<10;++i){
15         for(int j=0;j<10;++j){
16             womanPreferManNumber[i][womanPrefer[i][j]]=j;
17         }
18     }
19     for(int i=0;i<10;++i){
20         //第i轮内让所有男人对各自第i喜欢的女人告白,如果被告白的女人还没有对象就接受;否则将其与已有的约会对象做比较,
21         //如果女人更喜欢新对象,则劈腿;不然则保持原约会关系
22         for(int j=0;j<10;++j){
23             if(manDated[j]!=-1){    //已经约会的男人直接跳过
24                 continue;
25             }
26             int likedWoman=manPrefer[j][i]; //j号男人第i喜欢的女人
27             if(womanDated[likedWoman]==-1){//该女人还没有对象
28                 DatedMan+=1;
29                 womanDated[likedWoman]=j;   //likedWoman和j进行约会
30                 manDated[j]=likedWoman;     //likedWoman和j进行约会
31             }
32             else{//该女人已经有对象,则进行比较
33                 int existedDatedMan=womanDated[likedWoman]; //该女人正在约会的男人编号
34                 if(womanPreferManNumber[existedDatedMan]>womanPreferManNumber[j]){//女人更喜欢j(womanPreferManNumber值小的说明排名靠前)
35                     int lvmaozi=womanDated[likedWoman];//前男友
36                     womanDated[likedWoman]=j;//劈腿
37                     manDated[j]=likedWoman;//劈腿
38                     manDated[lvmaozi]=-1;   //被绿
39                 }
40             }
41         }
42         if(DatedMan>=10){   //都有对象了就退出
43             break;
44         }
45     }
46 }

注意上述代码未经过验证!

Gale-Shplay算法的伪代码:

技术分享图片

 

Gale-Shplay算法(约会匹配问题)

原文:https://www.cnblogs.com/FdWzy/p/13174993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!