男女完全匹配算法

#include<iostream>
#include<String>
#include"Free_W_M_Stack.cpp"
using namespace std;
int Number1(string elem, string A[], int n){//返回某个人的匹配号for (int i = 0; i < n; i++){if (elem == A[i])return i;}return -1;
}
int main(){int n;//n代表有多少对男女cout << "请输出有多少对男女:"; cin >> n;W_M_Stack<int> M_Free(n);//建立一个男人的单身库string * M_Name = new string[n], *W_Name = new string[n], temp;int **Man = new int*[n], **Woman = new int*[n];//前者代表每个男性的心中女性的排名,后者代表心中的男性的排名int *W_IsDating=new int[n];//-1代表还没有约会过,大于-1的值是约会的对象int *M_Love = new int[n];//每个男人目前心中预定的表白的人的排名cout << "请输出男/女性名字从 0 到 " << n - 1 << " 的各个心目中女/男性编号 0 到 " << n - 1 << " 的排名(空格):" << endl;cout << "输出男性的名字 : " << endl;for (int i = 0; i < n; i++){cin >> M_Name[i];M_Free.push(i);Man[i] = new int[n];cout << M_Name[i] << " 的女性排名是:";for (int j = 0; j < n; j++){cin >> temp;if (i == 0)W_Name[j] = temp;Man[i][j] = Number1(temp, W_Name, n);}M_Love[i] = 0;}cout << endl << endl << "输出女性的名字 : " << endl;for (int i = 0; i < n; i++){Woman[i] = new int[n];cout << W_Name[i] << "  的男性排名是:";for (int j = 0; j < n; j++){cin >> temp;int s=Number1(temp, M_Name, n);Woman[i][s] = j;}W_IsDating[i] = -1;}while (M_Free.isEmpty()!=-1){//若某个男人还是单身int i = M_Free.pop();if (W_IsDating[Man[i][M_Love[i]]] == -1){//若男人未表白的女性最赞赏的还未约会W_IsDating[Man[i][M_Love[i]]] = i;//女人记录约会的对象M_Love[i]++;}else{int k = W_IsDating[Man[i][M_Love[i]]];//如果男人看上的女人已经开始约会了,k代表约会的对象的idif (Woman[Man[i][M_Love[i]]][k] <= Woman[Man[i][M_Love[i]]][i]){//如果女人处于约会状态而且目前的对象优于表白的男人++M_Love[i];//表白的男人开始找下一个M_Free.push(i);}else{//如果女人处于约会状态而且对表白者的好感优于目前的约会对象W_IsDating[Man[i][M_Love[i]]] = i;M_Free.push(k);++M_Love[i];//表白成功的预定下一个最赞赏的女性}}}cout << "最终生成的稳定匹配是:" << endl;cout << "男" << "\t" << "女" << "\t" << endl;for (int i = 0; i < n; i++){cout << M_Name[i] << "\t" << W_Name[Man[i][--M_Love[i]]] << "\t" << endl;}for (int i = 0; i < n; i++){delete[] Man[i];delete[]Woman[i];}delete[] W_Name;delete[] M_Name;delete[] W_IsDating;delete[] M_Love;
}

  

#include<iostream>
using namespace std;
template<class T>class W_M_Stack{//记录男女的单身的情况栈int Maxsize;int size = -1;T* st;
public:W_M_Stack(int n){Maxsize = n;st = new T[Maxsize];}int isEmpty(){if (size >= Maxsize)return 1;if (size == -1)return -1;return 0;}bool push(T elem){if (isEmpty() != 1){st[++size] = elem;return true;}return false;}T pop(){if (isEmpty() != -1){size--;return st[size + 1];}return -1;}~W_M_Stack(){delete[] st;}
};

  

转载于:https://www.cnblogs.com/1996313xjf/p/5895473.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

监听el-dialog关闭弹窗事件;el-dialog注册@close关闭事件

场景&#xff1a;在关闭el-dialog弹框时候&#xff0c;做数据清空。只需要给el-dialog注册close关闭事件即可&#xff1a; <el-dialog title"标题" :visible.sync"bind" size"small" closecloseDialog> </el-dialog>//关闭弹框的事件…

手机游戏赚钱到底有多难?接入运营商或需一年

假如你是一个手机游戏创业者&#xff0c;假如你想赚钱&#xff0c;亲&#xff0c;请先与运营商搞好关系&#xff0c;或者&#xff0c;请找一个有SP经验或者熟悉手机游戏审批流程的合作伙伴&#xff0c;否则&#xff0c;等待你的将是甚至长达一年的审批期。 先来讲讲我为何要写这…

总是骗人的你

从这周来&#xff0c;就一直在和周围的人说着要结束实习。到现在&#xff0c;也没有办法办理离职。我现在已经看不起自己了&#xff0c;我已经成为我当初讨厌的人&#xff0c;嘴里一直嚷嚷着&#xff0c;却一直都做不到。还不停的给周围的人说&#xff0c;我想&#xff0c;这种…

Controller向View传值方式总结

From: http://www.cnblogs.com/guohu/p/4377974.html 总结发现ASP.NET MVC中Controller向View传值的方式共有6种&#xff0c;分别是&#xff1a; ViewBagViewDataTempData向普通View页面传一个Model对象向强类型页面传传一个Model对象用一个ViewModel对象解决所有问题 首先我们…

el-table-column动态显示与隐藏

两个不同条件下共用一个el-table表格&#xff0c;并且通过v-if控制某一列的显示与否。 若不生效&#xff0c;则按照如下设置。 ​​​​​​​<el-table-column v-if"undo" label"xxxx" prop"xx" min-width"110" show-overflow-too…

重装系统后,快盘不能拷贝进文件的解决办法

给对应账号的的虚拟磁盘文件&#xff0c;添加"Authenticated Users"账户的权限

记录一次bug解决过程:数据迁移

一 总结不擅长语言表达&#xff0c;勤于沟通&#xff0c;多锻炼 调试MyBatis中SQL语法:foreach 问题&#xff1b;缺少关键字VALUES。很遗憾&#xff1a;它的错误报的让人找不着北。 二 BUG描述&#xff1a;MyBatis中批量插入数据异常 <?xml version"1.0" encodin…

el-tabs标签页浏览器卡死;使用el-tab-pane浏览器卡死;element-ui使用el-tab-pane浏览器卡死,el-tab,el-tab-pane版本不兼容

在项目中使用了el-tabs标签页卡死&#xff0c;一直刷新加载中 出现该问题的原因主要是版本不兼容的问题 首先找到package.json&#xff0c;将以下vue版本修改为2.6.0&#xff0c;element-ui版本修改为2.13.2&#xff1a; “element-ui”: “2.13.2” “vue”: “2.6.0” “vue-…

.net 获取网站根目录的方法

From: http://www.cnblogs.com/wenbo/archive/2011/08/09/2132620.html 获取网站根目录的方法有几种如&#xff1a; Server.MapPath(Request.ServerVariables["PATH_INFO"])    Server.MapPath("/")    Server.MapPath("")//当前代码文件所在…

2013年3月16日星期六

今天第11周&#xff0c;本来是双休&#xff0c;结果要加班&#xff0c;本来要加班写详细设计结果被做画面自适应解决现场问题。本来想回来一个人安静写详细设计&#xff0c;结果却一直在看电影聊天&#xff0c;似乎回来后就不能控制自己了&#xff0c;有点痛苦

繁华模拟赛 ljw分雕塑

/* 用f[i][k]表示考虑到第i个雕塑&#xff0c;分成k组&#xff0c;可不可行&#xff08;这是一个bool类型的数组&#xff09; 转移&#xff1a; f[i][k]f[j][k-1],sum[i]-sum[j]合法 */ #include <cstdio> #include <cstdlib> #include <cstring> #include &…

el-table滚动加载数据;vue自定义指令监听el-table的滚动事件,达到滚动条滚动到底部加载新数据

首先在vue项目中的main.js文件添加一个监听el-table滚动条事件的自定义指令&#xff0c;以供全局使用 // 监听el-table滚动 Vue.directive(loadmore, {bind(el, binding) {const selectWrap el.querySelector(.el-table__body-wrapper)selectWrap.addEventListener(scroll, fu…

PHPMailer - PHP email transport class

在服务器安装 sendmail sudo apt-get install sendmail启动 sendmailsudo /etc/init.d/sendmail start 修改 php.ini [mail function] SMTP localhost smtp_port 25 sendmail_from meexample.com Function sendMail <?php /* 调用PHPMailer发送电邮 * param String $r…

Razor语法大全

From: http://www.cnblogs.com/dengxinglin/p/3352078.html Razor是基于framewor4以上写的一个开源项目&#xff1a;https://github.com/Antaris/RazorEngine/ Razor是包含了模板引擎和动态编译两部分。本部分就简单记录了模板引擎的一些语法&#xff0c;之后用Razor做一个代码…

ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

原文 ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库。System类库包含给构成ArcGIS的其他类库提供服务的组件。System类库中定义了大量开发者可以实现的接口。AoInitializer对象就是在System类库中定义的&#xff0c;所…

el-dialog的内容不刷新;el-dialog内容有缓存;el-dialog里面的组件不刷新问题;

el-dialog里面的内容是带缓存的&#xff0c;也就是说除了第一次打开会初始化&#xff0c;其他次打开都是直接加载缓存的&#xff1b; 这就导致了有时候打开弹框时候&#xff0c;内容不刷新。有说法说是el-dialog嵌套太深大致的。 解决方法&#xff1a;直接给弹框的内容部分添加…

Android布局属性详解之RelativeLayout

RelativeLayout用到的一些重要的属性&#xff1a; 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边…

el-badge标记;el-tabs配合el-badge提示数字

标签选项卡配个标记数字提示 注意&#xff1a;el-tabs可以通过具名 slot 来实现选项卡的内容 <template><div><el-tabs v-model"tabValue"><el-tab-pane label"全部" name"1"></el-tab-pane><el-tab-pane lab…

[DP之计数DP]

其实说实在 我在写这篇博客的时候 才刚刚草了一道这样类型的题 之前几乎没有接触过 接触过也是平时比赛的 没有系统的做过 可以说0基础 我所理解的计数dp就是想办法去达到它要的目的 而且一定要非常劲非常快 都是一个很小的数然后有很多种接下来的方案使得这个数一下子变很大 计…

C++程序设计(第2版)课后习题答案--第11章

11.9 定义分数类Rational...... View Code 1 #include<iostream.h>2 #include<stdlib.h>3 class Rational{4 private:5 int fm,fz;6 int getZdgys(int a,int b);7 public:8 Rational(){9 fm1;fz0; 10 } 11 Rational(int a,int b); 1…