稳定匹配问题之三国

首先,我们先看看问题:

有n个男人和n个女人(n>=2),每个男人对所有女人有一个好感度排名,每个女人对所有男人也有一个好感度排名。将男女两两配对,得到n对男女,称之为一个完美匹配。如果有一组男女A和B,他们在匹配中没有被配对,且对对方的好感度均大于对现有配偶的好感度(男人A觉得女人B好过现在的妻子C,女人B觉得A好过现在的丈夫D),则称之为一个不稳定配对。如果一个完美匹配中没有不稳定配对,则称改匹配为一个稳定匹配。

|
左图是男对女的好感度,右图是女对男的好感度
思路:
首先,拿到这个题,一次性写出是不现实的,也就是说,这其实也就是一个不断尝试的过程,也就是说,我们匹配之后,需要对已经匹配的序列确保排序没有问题,达到稳定匹配,当然想选择和自己最喜欢的人在一起了,但是,最为上帝,得考虑到全局,也就是说大家尽量都是彼此更爱的人,没有一个你爱的人他身边的人更爱的你身边的人,你身边的人更爱他身边的人。哈哈哈哈,有点绕了。但是我们的目的也就是找出一个稳定匹配。

#include<stdio.h>
#include<stdlib.h>
#define num 5int m[num][num]={{0,1,2,4,3},{0,2,1,3,4},{4,0,2,1,3},{2,1,3,0,4},{2,0,1,3,4}};
//男生对女生的偏爱程度
int w[num][num]={{4,0,1,3,2},{3,1,2,0,4},{3,2,1,4,0},{0,1,3,2,4},{2,3,4,1,0}};
//女生对男生的偏爱程度
int s1[num]={-1,-1,-1,-1,-1};    //男生是否配对  -1否 其它为配对女生的序号
int s2[num]={-1,-1,-1,-1,-1};    //女生是否配对  -1否 其它为配对男生的序号
void output() //输出两个偏好矩阵
{printf("男:0->吕布,1->刘备,2->孔明,3->周瑜,4->曹操\n");printf("女:0->貂蝉,1->大乔,2->小乔,3->尚香,4->阿丑\n");int i,j;printf("男生偏好矩阵:\n");for(i=0;i<num;i++){printf("男%d:",i);for(j=0;j<num;j++){printf("% d",m[i][j]);}printf("\n");}printf("女生偏好矩阵:\n");for(i=0;i<num;i++){printf("女%d:",i);for(j=0;j<num;j++){printf("% d",w[i][j]);}printf("\n");}
}void match()    //匹配
{int i,j,k;int old, now;for(i=0;i<num;i++){if(s1[i]==-1){    //该男生没有有匹配对象for(j=0;j<num;j++){if(s2[m[i][j]]==-1){ //如果心仪女神没有配对,则配对s1[i]=m[i][j];s2[m[i][j]]=i;break;}else{  //如果心仪女神有配对old=now=-1;//寻找女生现男友在女生心仪对象列表的下标for(k=0;k<num;k++)if(w[m[i][j]][k]==s2[m[i][j]])old = k;//寻找当前男生在女生心仪对象列表的下标for(k=0;k<num;k++)if(w[m[i][j]][k]==i)now = k;if(old>now){ //如果女生更加偏爱该男生,则换对象s1[i]=m[i][j];  //当前男生s2[m[i][j]]=i;s1[w[m[i][j]][old]]=-1; //前男友break;}//如果女生更加偏爱现在男生,则替换下一个女生}}}}for(i=0;i<num;i++)    //是否所有的男生都配对完成{if(s1[i]==-1){match();break;}}
}
void display()  //输出配对完成后的男女搭配
{int i;printf("man —— woman\n");for(i=0;i<num;i++){printf(" %d  ——  %d\n",i,s1[i]);}
}
int main()
{output();match();display();
}

注释写了大致的算法逻辑部分,应该可以看懂的

稳定匹配问题(脱单就靠这波了)相关推荐

  1. H5脱单盲盒交友解密授权版/分销提现/存取小纸条盲盒匹配管理平台/免签支付/可封装APP/带教程

    源码介绍: 本套源码为独立版,前端是h5的,有三套模板可切换,后台是thinkphp的框架.有文档搭建教程.有代理商模式 可付费购买代理商 有分销功能 成为代理商后,可获取下级分成.本系统免公gz号支 ...

  2. 解授权版/H5脱单盲盒交友/分销提现/ 存取小纸条/盲盒匹配/管理平台/免签支付/封装app

    盲盒交友源码最新版本 解授权版/H5脱单盲盒交友/分销提现/ 存取小纸条/盲盒匹配/管理平台/免签支付/封装app 链接: https://pan.baidu.com/s/1qwum12vrGTvgZ ...

  3. H5脱单盲盒交友V2.0.1解授权/分销提现/存取小纸条盲盒匹配管理平台/免签支付/封装app

    下载地址:点我下载 源码功能: H5版盲盒交友源码!抖音最火项目,特色功能;自定义虚拟数量.推广海报.IP黑名单.自定义价格.强制先留在抽.区分普通盲盒和条件盲盒.新闻和广告模块,等众多功能 支持打包 ...

  4. 程序员 520 脱单指南!

    作者 | 周志鹏 责编 | 伍杏玲 [CSDN 编者按]今天520,朋友圈一秒变成大型"虐狗现场",单身程序员表示"也想谈恋爱"啊,那么如何找到心仪的TA,程序 ...

  5. 最强脱单指南:如何通过区块链应用快速找到女朋友?

    本文由微信公众号DappVision原创首发,转载请联系授权 混了这么久链圈,你听说过区块链应用还能助力脱单吗?马云在给阿里巴巴员工做证婚时,讲过一个故事:蚂蚁金服有一位工程师,在相亲简历上写自己是工 ...

  6. 炫酷粒子表白,双十一脱单靠它了!

    ​ 双十一光棍节又要来临了,每年这个时候都是本人最苦闷的时刻.日渐消瘦的钱包,愈发干涸的双手,虽然变强了,头却变凉了.今年一定要搞点事情! <img src="https://img. ...

  7. 双11了,漂亮灵气仙气十足的小姐姐想脱单,广东惠州人,大专学历财务工作,性格温和(NO.001)...

    点击上方蓝色文字关注置顶公众号 NO.001 广东妹子 个 人 基 本 信 息 出生日期:1995年 身高:155cm 现居地:广东-珠海 老家:广东-惠州人 学历:大专学历 职业:财务工作 自 我 ...

  8. 亲测五种高效实用的脱单方法,赶紧收藏帮你快速找到优质对象!

    作为一名多年相亲征友的大龄女青年,试过了特别多的脱单方法走过了不少弯路,最后成功脱单,自己总结了以下五种脱单方法,亲测有效,想要快速脱单找到优质对象的你可以参考一下哦: 1.亲戚朋友介绍 通过介绍的相 ...

  9. 双十一脱单进行时,珍爱网掀起“云相亲”浪潮

    11月9日至11月11日,四川省共青团泸县县委携手珍爱网公益项目部举办"缘"来是你 "双十一"脱单公益相亲会,在"光棍节"来临之际,助力当地 ...

最新文章

  1. 农村生态是下一个十年的发力点
  2. JDK1.5官方下载_JDK5官方下载_JDK1.5API(chm)下载_JDK5APICHM中文参考下载_JDK1.5下载_JDK5下载...
  3. linux 没有线程的,,Linux 到现在还是没有线程呀?
  4. springCloud Finchley 实战入门(基于springBoot 2.0.3)【六 Hystrix 仪表盘】
  5. Js+DVML:很酷实用的右键弹出菜单
  6. 用vi在linux下查看16进制文件
  7. c语言分组求和函数,R语言 实现data.frame 分组计数、求和等
  8. 解决eclipse不会自动弹出Console控制台的问题
  9. 从 GMM 到 EM 算法
  10. 简单理解Zookeeper的Leader选举
  11. 宝塔linux面板什么用,宝塔面板干什么用的呢?
  12. error C1083 错误
  13. 【设计】二极管-稳压管稳压电路
  14. 皮亚诺的数概念起点和算术公理1-2告诉我们什么?—— 皮亚诺读后之四
  15. 相关性和差异的显著性
  16. 一元享移动怎么样_移动终于良心了?月费6元享46G流量,网友:后悔携号转网了!...
  17. 利用阿里大鱼下发短信验证码
  18. APP地推的一些经验
  19. cv::omni::StereoCalibrate 源码解析 (一) —— 单目标定
  20. webpack创建react项目

热门文章

  1. Github加速——FastGithub
  2. 动物养殖时计算机应用,2007年江苏省高考录取名单(南通盐城连云港徐州)【2】...
  3. SpringBoot 实现万能文件在线预览,已开源,支持offcie、office365等,真香!!
  4. 微服务架构理论-扩展立方体篇
  5. plsql快捷执行方式_总结PLSQL的快捷键以及使用技巧
  6. 前端 YUI3:Animation
  7. Java 编写de简单小游戏 -- 《Lights Off》
  8. 在eclipse中写java项目,简单使用hsqldb数据库--菜鸟教程
  9. 联合概率及其分布、边缘概率及其分布、条件概率及其分布和贝叶斯定理
  10. 年轮计算机,基于年轮参数的树木科属计算机识别方法研究