男女稳定匹配问题——贪心

今天上课研究生学长讲了一个问题,男女稳定匹配问题,作为一只单身狗觉得这个问题很有意思,下课就试着自己写了下代码。       现有n个男生与n个女生,一男一女配对,要求:       配对的男生与女生互相都是称心的、中意的,且配偶中任一个人都不能有其他彼此更中意的异性。即若给定(A,B)和(C,D)分别是两对配偶,若A和D彼此的喜欢程度都大于自己的配偶(A对D的喜欢程度胜于对B,并且D对
摘要由CSDN通过智能技术生成



    今天上课研究生学长讲了一个问题,男女稳定匹配问题,作为一只单身狗觉得这个问题很有意思,下课就试着自己写了下代码。


      现有n个男生与n个女生,一男一女配对,要求:
      配对的男生与女生互相都是称心的、中意的,且配偶中任一个人都不能有其他彼此更中意的异性。即若给定(A,B)和(C,D)分别是两对配偶,若A和D彼此的喜欢程度都大于自己的配偶(A对D的喜欢程度胜于对B,并且D对A的喜欢程度也胜于对C,这样就会出现A与D私奔的情况),这样是不存在的,也就是说,除了自己的配偶之外,没有更适合的人了。



      选择方式:
      男生选择自己喜欢的女生并向其告白(有可能多个男生对一个女),女生从对自己告白的男生里面挑选自己最中意的男生作为配偶,被拒绝的男生对其他(排除拒绝自己的女生)女生按照喜欢度排序,并向最喜欢的那个女生告白,所有女生从对自己告白的男生里面挑出最喜欢的一位作为配偶(包括上一步已经选过男生的女生,女生选择时也要考虑上一个选择的男生的喜欢程度是否高于这一次对自己告白的男生)。循环上面的步骤,直到所有男生与女生都配对成功。


      这样说比较绕口,用图解描述一下吧。
      假设现在有3个男生(A,B,C)与3个女生(1,2,3)。
      喜欢程度排序:

   



         

     第一次男生选取时,挑选自己最中意的女生,A—2, B—1, C—1, 向女生告白。
女生从这些向自己告白的男生中选取自己喜欢程度较高的男生,1—C, 2—A,1女生有两个男生向其告白(B和C),而1女生更喜欢C,所以选择C男生。
B男生被拒绝,在自己的喜欢程度排序中将1排除。



     

     第二次男生选取,A与C已经被选,只剩下B男生,B选择2(因为1女生已经拒绝了B,所以排除1之后最中意的女生是2)。女生2原来选择的B男生,但是在A和B之间,女生更喜欢B,所以拒绝A,选择

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值