C语言实现婚姻匹配问题

最近因为课程需要,看了看婚姻稳定匹配问题,用了两天把代码写完了。

具体问题就不详细写了,这里给出参看的网址。

EOJ上面的问题叙述:http://202.120.106.94/onlinejudge/problemshow.php?pro_id=162

整个思路结合着老师的课件和这篇文章,用C语言完成了整个代码。

//

// main.c

// MarriageMatch

//

// Created by shadowdai on 11-11-27.

// Copyright (c) 2011年 BUPTSSE. All rights reserved.

//

#include

int main (int argc, const char * argv[])

{

int manPerference[3][3];//下标表示女士的号码,1-5,储存的值表示对该女士的好感度

int womanPerference[3];//表示5位女士选择的男士

int manMostLike[3];//表示男士最喜欢的女士

int manCurrentMatch[3];//表示当前男士的配对对象

int womanCurrentMatch[3];//表示当前女士的配对对象

int womanBool[3];//表示女士的配对状况,0表示未配对,1表示已经配对

int manBool[3];//表示男士的配对状况

int MatchNumber = 0;

int i,j;

int max,Max;

printf("输入男士的好感度排名:(数字越大表示越喜欢)\n");

for (i = 0; i < 3; i++) {

printf("男士%d:\n",i+1);

for (j = 0; j < 3; j++) {

scanf("%d", &manPerference[i][j]);

}

}

//女士选择男士

for (i = 0; i < 3; i++) {

max = 0;

womanBool[i] = 0;

manBool[i] = 0;

Max = manPerference[0][i];

for ( j = 0; j < 3; j++) {

if (manPerference[j][i] > Max) {

max = j;

Max = manPerference[j][i];

}

}

womanPerference[i] = max;

}

printf("\n女士的选择:\n");

for (i = 0; i < 3; i++) {

printf("女士No.%d选择%d\n",i+1, womanPerference[i]+1);

}

//选出男士最喜欢的女士

for ( i = 0; i < 3; i++) {

for ( j = 0; j < 3; j++) {

if (manPerference[i][j] == 3) {

manMostLike[i] = j;

}

}

}

printf("\n男士最喜欢的女士:\n");

for (i = 0; i < 3; i++) {

printf("No.%d男士选择了No.%d女士\n",i+1,manMostLike[i]+1);

}

printf("\n");

while (MatchNumber != 3) {

//根据男士和女士的选择的对象进行匹配

for (i = 0; i < 3; i++) {

if (womanBool[manMostLike[i]] == 0 && manBool[i] == 0) {

//如果该男士选择的女士没有配对,那么将他们配对

manCurrentMatch[i] = manMostLike[i];

womanCurrentMatch[manMostLike[i]] = i;

womanBool[manMostLike[i]] = 1;

manBool[i] = 1;

MatchNumber += 1;

printf("No.%d男士与No.%d女士配对,两位在此之前均没有配对。\n", i+1, manCurrentMatch[i]+1);

}

else if(womanBool[manMostLike[i]] == 1 && manBool[i] == 0){

//如果该女士已经配对,则需要比较该女士更喜欢哪位男士

if (womanPerference[manMostLike[i]] == i) {

//如果该女士选择的是该男士,那么直接进行配对

manCurrentMatch[i] = manMostLike[i];

womanCurrentMatch[manMostLike[i]] = i;

womanBool[manMostLike[i]] = 1;

manBool[i] = 1;

MatchNumber += 1;

printf("No.%d男士与No.%d女士配对,虽然该女士之前有配对对象,但是选择了该男士。\n", i+1, manCurrentMatch[i]+1);

}

else if( manPerference[i][manMostLike[i]] > manPerference[womanCurrentMatch[i]][manMostLike[i]]){

//如果该女士没有选择该男士,但是该女士现在的配对对象的优先级低于该男士,则将他们配对

manBool[womanCurrentMatch[manMostLike[i]]] = 0;

manCurrentMatch[i] = manMostLike[i];

womanCurrentMatch[manMostLike[i]] = i;

womanBool[manMostLike[i]] = 1;

manBool[i] = 1;

printf("No.%d男士与No.%d女士配对,虽然该女士之前有配对对象,但是更喜欢该男士。\n", i+1, manCurrentMatch[i]+1);

}

else{

//如果该女士没有选择该男士,并且该男士的优先级低于该女士,那么该女士拒绝该男士

for ( j = 0; j < 3; j++) {

//该男士被拒绝之后,只能寻找下一个最喜欢的女士

if (manPerference[i][j] == manPerference[i][manMostLike[i]] -1) {

manMostLike[i] = j;

printf("No.%d男士没有配对成功,所以降低了选择的人士,现在他最喜欢No.%d女士。\n",i+1, j+1);

break;

}

}

}

}

else if(manBool[i] == 1){

printf("No.%d男士已经配对成功。\n",i+1);

}

}

}

for (i = 0; i < 3; i++) {

printf("\nNo.%d男士与No.%d女士配对成功!\n", i+1, manCurrentMatch[i]+1);

}

}

如果有需要,请标明转载,谢谢!

c语言婚姻管理程序,C语言实现婚姻匹配有关问题相关推荐

  1. C语言家谱管理程序,c语言的家谱——interesting~

    C++是直接从C语言发展过来的,但最初这种语言不是叫C++,而是C with class,这是由于当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有两个问题 ...

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

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

  3. C语言家谱管理程序,C语言实现家谱管理

    C语言上实现家谱管理系统 #include #include #include #include #define OK 1 #define ERROR -1 #define STACK_INIT_SI ...

  4. C语言家谱管理程序,C语言二叉树家谱管理系统.doc

    C语言二叉树家谱管理系统 摘 要 本文设计了一个对数据输入,输出,储存,查找的多功能软件,本文需要保存家族的基本信息,包括姓名及它们的关系,但是由于家族信息很巨大而且关系很复杂所以采用二叉树来表示它们 ...

  5. C语言家谱管理程序,[C语言]家谱 - 代码贴 - BCCN

    #include #include #include struct node; node *creat();//建立祖先 int add_child(node *head);//添加家庭成员 int ...

  6. 百c语言成绩管理程序计划书,c语言大赛策划书.doc

    c语言大赛策划书 电子信息工程系 第一届 C程序设计大赛 策 划 书 主办单位:电子信息工程系 承办单位:科技协会 E时空俱乐部 电子信息工程系第一届C程序设计大赛 一.活动目的: 为了发掘同学们潜力 ...

  7. 以下哪一个不属于python语言的特点-Python语言的特点有哪些

    Python语言的特点有哪些 Python 是目前最流行的语言之一,从云计算.大数据到人工智能,Python 无处不在,Python 人才需求量也在逐年攀升,Python 为何能发展如此的迅猛,究竟有 ...

  8. c语言人事管理系统,c语言人事管理系统

    现在网上有好多c语言程序都不能运行,今天就给大家分享自己写的一个c语言人事管理程序吧! 一.内容(标题:宋体,粗体,四号字) 本程序主要实现了对高校人事的管理.其不仅可以对人员的新建.添加.删除的基本 ...

  9. 计算机C P U的概念就是,2008计算机二级考试:C语言基础教程-C语言的特点

    C语言是中级语言 C语言通常称为中级计算机语言.中级语言并没有贬义,不意味着它功能差.难以使用.或者比B A S I C.P a s c a l那样的高级语言原始,也不意味着它与汇编语言相似,会给使用 ...

最新文章

  1. svn服务器搭建和使用 ubuntu_Ubuntu下 SVN 服务器搭建及使用
  2. Mysql 宕机引发索引丢失很可怕,文件 IO 中如何保证掉电不丢失数据?
  3. linux编译部署,linux下编译并部署Apache Apollo
  4. C语言实现:将一个字符串插入到另一个字符串的指定位置
  5. tar命令解压文件后造成目录权限更改
  6. GUI动画演示java_java – 使用JFrame的简单GUI动画
  7. 常见的通配符_技术干货 | 常见的mysql注入语句
  8. IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析
  9. HTML5+CSS3 Pink老师课后作业——小米logo过渡切换的实现
  10. 深度学习Tir-Hi3559A使用unbuntu系统的烧写步骤
  11. css单线边框_css border-collapse设置表格单线边框和双线边框
  12. 电池、电机、螺旋桨搭配
  13. MongoDB windows 局域网连接
  14. 2022年草根互联网圈较流行的副业汇总
  15. 全球及中国单波束回声探测仪行业十四五发展规划及项目前景评估报告2022-2027年
  16. illustrator插件-拼版功能开发-裁切标记-js脚本开发-ai插件
  17. windows磁盘管理压缩卷只能压缩一部分的问题解决办法
  18. C++定时切换桌面背景
  19. 腾讯QQ登录“无法访问个人文件夹”解决方法
  20. 案例-站狼云品智美站助力必信空调中国制造领先品牌...

热门文章

  1. 头脑风暴算法BSO优化BP神经网络-matlab源码
  2. 一文开启自然语言处理之旅
  3. 游戏平台代表--PS4【推荐】
  4. 数据库字段为什么要使用NOT NULL
  5. 播放量超2000w,这些高能恰饭视频为什么能被B站用户“反复观看”?
  6. DL基石-卷积神经网络(CNN)简易教程
  7. SSD是什么什么意思?
  8. 【HCIE备考笔记】精华啊,都是精华啊
  9. mysql对英文忽略字符集_非英文网站如何使用MySQL的字符集
  10. 自动验证抢宝箱时的滑动验证码代码实现