题意:
      给你n个男士n个女士,然后给你每个男士中女士的排名,和每个女士中每个男士在他们心中的排名,问你是否可以组成稳定的舞伴,如果存在以下情况(1)男生u和女生v不是舞伴,他们喜欢对方的程度都大于各自当前舞伴的程度,他们就可能抛弃自己现在的舞伴,这样的话匹配就不是稳定的。输出稳定的时候每个男生所匹配的女生。

思路:
      哎!本来就是一个最基本的稳定婚姻问题,输入输出的地方被白书翻译出翔了,我C,弄的我怎么敲都过不去,后来看了下白书的代码发现他是先输出男生心目中女生的排名,而他前面说的却不是这个,改了之后还是不过,后来又接着往下看,发现输出的是男生的结果,不是女生,就是一个输入输出整的调了好久,本来我的模板就是我自己写的,还以为是自己的模板写错了。

上面说了那么多废话,下面来说下稳定婚姻问题的思想吧,首先稳定婚姻问题是必然有唯一解的,至于为什么,这个可以去网上找详细证明,如果不想证明,我们可以想一下每个人心中都对所有人排名了,如果剩下一个女生,那么必定会剩下一个男生,所谓剩下的就是他们不能再追求得上自己更喜欢的了,最后就剩他两个了,直接匹配上也是稳定的。对于算法的过程是这样的,我们先把所有男生都扔进队列,队列里的就表示当前没有找到对象的男生,然后男生一个一个的从队列出来,出来后从自己最喜欢的女生开始一个一个访问,如果这个女生当前没有对象,那么直接匹配上,如果有的话就看看是不是自己在那个女生心中的地位比她当前的对象好,如果好,那么直接匹配,那个女生之前的对象将被扔回单身队列,就这样一直到单身队列为空就完事了,算法整体上看感觉男生很可怜,很容易被女生直接扔回去,其实女生更可怜,没有自己的主动权,只能是等着选他的男生中选一个最好的,自己最喜欢的男生可能永远不会去选择他,呵呵,感觉算法比较搞笑....

#include<stdio.h>
#include<string.h>
#include<queue>

#define N 1000 + 10

using namespace std;

int map[N][N] ,sc[N][N];
int mark[N][N];
int nowb[N] ,nowg[N];

void Marry(int n)
{
   queue<int>q;
   for(int i = 1 ;i <= n ;i++) 
   q.push(i);
   memset(nowb ,255 ,sizeof(nowb));
   memset(nowg ,255 ,sizeof(nowg));
   memset(mark ,0 ,sizeof(mark));
   while(!q.empty())
   {
      int xin ,tou;
      tou = q.front();
      q.pop();
      for(int i = 1 ;i <= n ;i ++)
      {
         xin = map[tou][i];
         if(mark[tou][xin]) continue;
         mark[tou][xin] = 1;
         if(nowg[xin] == -1)
         {
             nowg[xin] = tou;
             nowb[tou] = xin;
             break;
         }
         else if(sc[xin][tou] > sc[xin][nowg[xin]])
         {
             q.push(nowg[xin]);
             nowg[xin] = tou;
             nowb[tou] = xin;
             break;
         }
       }
   }
}

int main ()
{
    int t ,n ,i ,j ,a;
    scanf("%d" ,&t);
    while(t--)
    {
        scanf("%d" ,&n);
        for(i = 1 ;i <= n ;i ++)
        for(j = 1 ;j <= n ;j ++)
        scanf("%d" ,&map[i][j]); 
        for(i = 1 ;i <= n ;i ++)
        {
           for(j = 1 ;j <= n ;j ++)
           {
              scanf("%d" ,&a);
              sc[i][a] = n - j + 1;
           }
        }
        Marry(n);
        for(i = 1 ;i <= n ;i ++)
        printf("%d\n" ,nowb[i]);
        if(t) puts("");
    }
    return 0;
}

LA3989女士的选择相关推荐

  1. h5微信f分享链接给对方获取对方手机号_高明一男子冒充房主行骗被抓,一女士分享手机屏幕被骗17万!...

    高明一男子冒充房主行骗被抓 近日,想在高明购买房产的关女士通过朋友介绍,认识了"门路多"的邓某. 关女士 邓哥,我想买房,有无笋盘介绍一下? 我最近手头资金有点紧,刚好有套房子想卖 ...

  2. 这个“十一”长假,你是背“锅”出行吗?

    来源 | 中新经纬 ID | jwview 文 | 闫淑鑫 今年十一,不少消费者提前购买了一些自热米饭.自热火锅等自热食品,以备出行途中不时之需. 中新经纬从大润发方面获得的数据显示,十一假期前,自热 ...

  3. 疯狂的快递骗局:你稀里糊涂支付9.9元代收费时,有人已获利几千万!

    本文经授权转载自"电商报" ID:kandianshang 作者:电商君 科技的发展一日千里,时代的变革,远超所有人的想象. 当你满怀希望地为科技创造的便利而欢欣鼓舞时,现实却总会 ...

  4. 京东内部资料【自然搜索排序白皮书】打算混京东的屌丝必看!

    混淘宝不懂淘宝搜索规则,不懂自然搜索,只靠付费推广,你永远做不大!混京东亦然!淘宝是非常成熟的平台,已经有N家公司专门从事淘宝搜索规则研究,提供这方面的seo服务.一直以来,京东搜索规则都不明朗,因京 ...

  5. ​试衣APP开发制作

    虽然购物平台越来越多,但是女性用户在选择服装时还是会花费很多精力和时间,很多女士因为要发展事业,所以也不想在选择服装时消耗太多精力,很多女士会选择使用在线试衣APP,而在线试衣APP开发是可以帮助用户 ...

  6. 连锁加盟与直营连锁有什么区别?

    提到这个,为什么两种模式中都有"连锁"字样呢? 想要解答这个问题,先得了解什么是连锁店.然后才能继续谈加盟与直营的详细区别 目录 1. 连锁店的定义 2.加盟连锁与直营连锁的区别 ...

  7. c语言婚姻管理程序,C语言实现婚姻匹配有关问题

    C语言实现婚姻匹配问题 最近因为课程需要,看了看婚姻稳定匹配问题,用了两天把代码写完了. 具体问题就不详细写了,这里给出参看的网址. EOJ上面的问题叙述:http://202.120.106.94/ ...

  8. c语言婚姻管理程序,C语言实现婚姻匹配问题

    最近因为课程需要,看了看婚姻稳定匹配问题,用了两天把代码写完了. 具体问题就不详细写了,这里给出参看的网址. 整个思路结合着老师的课件和这篇文章,用C语言完成了整个代码. // // main.c / ...

  9. 银行面试着装攻略分享(二)银行着装要点归纳

    春招面试快节奏,要知道面试着装形象在面试中占分也是非常高的,毕竟银行也是服务性质的,对于应试者的形象比较看重.这期就接着上期的内容继续给大家说说关于银行面试服装的攻略,从如信银行考试中心了解到的整理如 ...

最新文章

  1. 以智能数据架构,挖掘增长金矿
  2. Nacos的服务注册表结构是怎样的?
  3. PrimerCH3字符串,向量,迭代器,数组
  4. caffe新手常遇到的三个问题
  5. php 数组xml,php 数组转xml的例子
  6. find 命令_linux-find命令
  7. app.honeycomb.Shell$HomeActivity failed to start
  8. java acr122 读取数据_acr122读写器软件下载-Acr122读写软件 1.59 官方版 - 河东下载站...
  9. mcgs组态软件中字体如果从左到右变化_MCGS组态软件课件-第5章.ppt
  10. 比想像力更难的,是按自己的价值观行动的勇气
  11. 多线程练习题(双色球)
  12. Hyper-V虚拟机安装win10系统 2021-10-16
  13. python单位根检验平稳性怎么看是否平稳_Python ADF单位根检验查看结果实现方法...
  14. Spring Boot 8:Spring Boot整合Redis
  15. ctfshow--ssrf
  16. M1版MacBookAir使用情况(供购买参考)
  17. 可文件存储的动态通讯录(C语言)
  18. js 递归创建文件夹
  19. Spring Boot入门-快速搭建网页
  20. 如何在Release状态下进行调试

热门文章

  1. Hacking with Angular: 玩转ngOptions指令
  2. Hadoop源码阅读-HDFS-day2
  3. XE5 Android 开发数据访问手机端 解决乱码的办法
  4. python paramiko 问题总结
  5. SPQuery 查询知多少
  6. CentOS6.9下手动编译并安装Python3.7.0
  7. 画正圆角矩形 - HTML5 Canvas 作图
  8. 地铁时间:第 1 周
  9. (转)C# Delegate.Invoke、Delegate.BeginInvoke
  10. (转)个例子让你了解Java反射机制