几对男女   给出每个人心中的优先级   进行最合理的匹配

要打印名字的话必须有一个名字数组

英文名用map

稳定婚姻问题:

每次循环遍历所有的男的

每个男的对目前未被拒绝的并且优先级最高的进行预匹配  如果1女的没有伴侣2女的对该男的好感度比女的伴侣的好感度更高   满足任意一个则进行匹配

不断循环直到所有男的都有伴侣

#include<cstdio>
#include<string>
#include<map>
#include<iostream>
#include<cstring>
using namespace std;
#define N 20 map<string,int>mp_boy,mp_girl;
int girl[N][N],boy[N][N];//girl数组存放  第i个女对第j个男的好感度   boy数组存放第i个男的第j优先好感度为谁
int match_girl[N],match_boy[N];
string name_boy[N],name_girl[N];
int rank1[N]; int main()
{
mp_boy.clear();mp_girl.clear();
int n;
while(scanf("%d",&n)==)
{
string name,str;
int cnt=;
for(int i=;i<=n;i++)
{
cin>>name;
mp_boy[name]=i;
name_boy[i]=name;
for(int j=;j<=n;j++)
{
cin>>str;
int t=mp_girl[str];
if(!t)
mp_girl[str]=t=++cnt,name_girl[cnt]=str;
boy[i][j]=t;
}
}
for(int i=;i<=n;i++)
{
cin>>name;
for(int j=;j<=n;j++)
{
cin>>str;
int t=mp_boy[str];
girl[ mp_girl[name] ][t]=n-j;
}
}
memset(match_boy,,sizeof match_boy);
memset(match_girl,,sizeof match_girl);
memset(rank1,,sizeof rank1); int flag=;
while(flag)
{
flag=;
for(int i=;i<=n;i++)
{
if(!match_boy[i])
{
int temp=boy[i][ rank1[i]++ ];
if(!match_girl[temp])
match_boy[i]=temp,match_girl[temp]=i;
else if( girl[temp][i]>girl[temp][ match_girl[temp] ] )
{
match_boy[ match_girl[temp] ]=;
match_boy[i]=temp;
match_girl[temp]=i;
}
flag=;
}
}
}
for(int i=;i<=n;i++)
cout<<name_boy[i]<<" "<<name_girl[ match_boy[i] ]<<endl;
}
}

Marriage is Stable HDU1522 稳定婚姻问题基础的更多相关文章

  1. HDU 1522 Marriage is Stable 【稳定婚姻匹配】(模板题)

    <题目链接> 题目大意: 给你N个男生和N个女生,并且给出所有男生和女生对其它所有异性的喜欢程度,喜欢程度越高的两个异性越容易配对,现在求出它们之间的稳定匹配. 解题分析: 稳定婚姻问题的 ...

  2. HDU1522 稳定婚姻匹配 模板

    Marriage is Stable Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. 【POJ 3487】 The Stable Marriage Problem (稳定婚姻问题)

    The Stable Marriage Problem   Description The stable marriage problem consists of matching members o ...

  4. POJ 3487 The Stable Marriage Problem(稳定婚姻问题 模版题)

    Description The stable marriage problem consists of matching members of two different sets according ...

  5. 【转】稳定婚姻问题(Stable Marriage Problem)

    转自http://www.cnblogs.com/drizzlecrj/archive/2008/09/12/1290176.html 稳定婚姻是组合数学里面的一个问题. 问题大概是这样:有一个社团里 ...

  6. 【HDU1914 The Stable Marriage Problem】稳定婚姻问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1914 题目大意:问题大概是这样:有一个社团里有n个女生和n个男生,每位女生按照她的偏爱程度将男生排序, ...

  7. 【稳定婚姻问题】【HDU1435】【Stable Match】

    2015/7/1 19:48 题意:给一个带权二分图  求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...

  8. hdoj1435 Stable Match(稳定婚姻问题)

    简单稳定婚姻问题. 题目描述不够全面,当距离相同时容量大的优先选择. 稳定婚姻问题不存在无解情况. #include<iostream> #include<cstring> # ...

  9. POJ3487[稳定婚姻]

    The Stable Marriage Problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2974 Accepted ...

随机推荐

  1. 【题解】 P1879 玉米田Corn Fields (动态规划,状态压缩)

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  2. bzoj1018/luogu4246 堵塞的交通 (线段树)

    对于一个区间四个角的点,可以用线段树记下来它们两两的联通情况 区间[l,r]通过两个子区间[l,m],[m+1,r]来更新,相当于合并[l,m],[m+1,r],用(m,m+1)这条边来合并 查询a, ...

  3. C&C++图形图像处理开源库

    Google三维APIO3D O3D 是一个开源的 WebAPI 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准.此格式期望真正的基于浏览器,独立于操作系统之外, ...

  4. 命令行 设置redis 时间

    > set name jack OK > expire jack (integer) > ttl jack (integer) - > expire name (integer ...

  5. java基础基础总结----- System

    常用的方法: 细节分析:

  6. JIRA项目管理搭建

    部署JIRA 7.2.2 for Linux 转自:http://www.yfshare.vip/2017/05/09/%E9%83%A8%E7%BD%B2JIRA-7-2-2-for-Linux/ ...

  7. bzoj千题计划289:bzoj 2707: [SDOI2012]走迷宫

    http://www.lydsy.com/JudgeOnline/problem.php?id=2707 dp[i] 表示从点i到终点的期望步数 dp[i]= Σ (dp[j]+1)/out[i] j ...

  8. Sublime Text 2 绿色汉化版 x64

    前天介绍了<Sublime Text 2 绿化与汉化 [Windows篇]>,应大家要求,我特地做了汉化版分享给大家. 很清新吧,但我没安装多余的插件,只是安装了几个必备的插件,如 输入法 ...

  9. Javascript摸拟自由落体与上抛运动 说明!

    JavaScript 代码 //**************************************** //名称:Javascript摸拟自由落体与上抛运动! //作者:Gloot //邮箱 ...

  10. SpringBoot框架的权限管理系统

    springBoot框架的权限管理系统,支持操作权限和数据权限,后端采用springBoot,MyBatis,Shiro,前端使用adminLTE,Vue.js,bootstrap-table.tre ...