算法分析课程作业(仅供参考)

源代码:

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;/*** @description: Gale-Shapley algorithm* @author: Qing Zhang* @time: 09*/
public class GaleShapley {/*** @Description: GS algorithm* note: The number of men must be equal to women.* @Param: [* paraManPreferences : Men's Descending Preference Array for Women.* paraWomanPreferences : Women's Descending Preference Array for Men* ]* @return: java.util.HashMap<java.lang.Integer, java.lang.Integer>*/public static HashMap<Integer, Integer> gsAlgorithm(int[][] paraManPreferences, int[][] paraWomanPreferences) {// initial.int numOfMan = paraManPreferences.length; // number of menint numOfWoman = paraWomanPreferences.length; // number of womenif (numOfMan != numOfWoman) {System.out.println("The data format is wrong!");return null;}// Record whether women are freeboolean[] singleWoman = new boolean[numOfWoman];// Women’s preference for men, sorted by male numberint[][] womanPreferencesToMan = new int[numOfWoman][numOfMan];for (int i = 0; i < numOfWoman; i++) {for (int j = 0; j < numOfMan; j++) {womanPreferencesToMan[i][paraWomanPreferences[i][j]] = j;}}// Single manQueue<Integer> singleMan = new LinkedList<>();// Results after allocation (female, male)HashMap<Integer, Integer> lovers = new HashMap<>();for (int i = 0; i < numOfMan; i++) {singleMan.add(i);}// Loop... Find the woman for every single man.while (!singleMan.isEmpty()) {int curMan = singleMan.peek();int curWoman;for (int i = 0; i < numOfWoman; i++) {curWoman = paraManPreferences[curMan][i];if (!singleWoman[curWoman]) {lovers.put(curWoman, curMan);singleWoman[curWoman] = true;singleMan.poll();break;} else if (womanPreferencesToMan[curWoman][lovers.get(curWoman)]> womanPreferencesToMan[curWoman][curMan]) {singleMan.add(lovers.get(curWoman));lovers.put(curWoman, curMan);singleMan.poll();break;}}}return lovers;}public static void main(String[] args) {int[][] man = new int[][]{{0, 1, 2}, {1, 0, 2}, {0, 1, 2}};int[][] woman = new int[][]{{1, 0, 2}, {0, 1, 2}, {0, 1, 2}};HashMap<Integer, Integer> lovers = GaleShapley.gsAlgorithm(man, woman);if (lovers != null) {for (Map.Entry<Integer, Integer> entry : lovers.entrySet()) {System.out.println(entry.getValue() + "号男性---" + entry.getKey() + "号女性");}}}
}

构造数据:

运行结果:

C:\Users\Administrator\.jdks\temurin-11.0.12-1\bin\java.exe "-javaagent:E:\IntelliJ IDEA 2020.1\lib\idea_rt.jar=56703:E:\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath D:\JavaProject\JustForTest\out\production\JustForTest GaleShapley
0号男性---0号女性
1号男性---1号女性
2号男性---2号女性Process finished with exit code 0

配对算法(Gale-Shapley)实现相关推荐

  1. m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 随着当代无线通信事业的迅猛发展,无线频谱资源已显得越来越匮乏,传统固定静态的无线频谱分配模式 ...

  2. 稳定婚姻问题:Gale–Shapley算法

    (一)问题的引出 在组合数学.经济学.计算机科学中,稳定婚姻问题(英语:stable marriage problem,简称SMP)又称为稳定配对问题(stable matching problem) ...

  3. 机组配对算法matlab,基于MATLAB的风力发电机组控制算法的研究 - 北极星风力发电网...

    4.2 载荷仿真 BLADED软件外部控制器模块能使用任何期望的控制算法,因此为验证本文所设计控制算法的性能,将对新控制算法与在VC下开发的常规控制算法进行载荷仿真比较,运行风况为如图6所示,下图所示 ...

  4. 【Gale Shapley 婚姻稳定匹配算法实现】

    原理: 所有男性按照好感的高低向对应女性求婚 每个女性在所有的向她发出求婚的男性和其丈夫(如果暂无丈夫则不做比较)选择一个最喜欢的,如果这个最喜欢的是当前的丈夫,则婚姻关系不变,否则与当前丈夫离婚,并 ...

  5. 算法(Python版)|156Kstars|神级项目-(1)The Algorithms - Python简介

    文章目录 算法(Python版) 项目地址 项目概况 说明 参与入门 社区频道 算法列表 Arithmetic Analysis 算术分析 Audio Filters 音频过滤器 Backtracki ...

  6. RANSAC算法在图像拼接上的应用的实现

        关于算法原理请参考<基于SURF特征的图像与视频拼接技术的研究>. 一.问题提出         RANSAC的算法原理并不复杂,比较复杂的地方在于"建立模型" ...

  7. 两个矩阵是否相交的算法_刷透近200道数据结构与算法,成功加冕“题王”,挤进梦中的字节!...

    不管是学生还是已经工作的人,我想彼此都有一个相同的梦想:进大厂! 眼看着2020年还有个三十来天就要完美收尾了,那么如何才能在未来三个月弯道超车赶上"金三银四的春招",进入梦寐以求 ...

  8. “稳定婚姻算法”雨夜谈-M/N资源匹配问题

    连续数月的阴雨绵绵,江南烟雨似乎没有停止的迹象,近日又迎来了下半年目前为止最猛烈的寒潮,无论哪一个都是我超级期待和喜欢的,这样的天气,不适合睡觉. 一个很不错的算法,稳定婚姻算法. 先给出一个概念,来 ...

  9. 一看“左程云:200道算法与数据结构”,二刷“阿里云:70+算法题、30种大厂笔试高频知识点”,3月过去终于挺进我梦中的字节!

    不管是学生还是已经工作的人,我想彼此都有一个相同的梦想:进大厂! 眼看着2020年还有个三十来天就要完美收尾了,那么如何才能在未来三个月弯道超车赶上"金三银四的春招",进入梦寐以求 ...

  10. 算法推荐女朋友,靠谱吗?

    作者 | 抓码青年       责编 | 张红月 如果有一天让你同算法推荐给你的异性结婚,你会愿意吗? 前几天,抓码君在浏览微博时刷到了这条热搜:#腾讯获推荐婚恋对象专利授权#. 细查一番,发现鹅厂在 ...

最新文章

  1. U盘安装CentOS 7
  2. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第9章-二阶连续时间时延多智能体系统加权一致性
  3. agv ti 毫米波雷达_激光雷达VS毫米波雷达 谁才是自动驾驶“头号玩家”?
  4. 让JavaScript回归函数式编程的本质
  5. Angular单元测试里使用fixture.debugElement测试UI界面元素
  6. python代码书写_Python代码的优雅写法,让代码更简洁
  7. oracle比较两个表数据的差异
  8. 在linux下进行嵌入式系统设计,一种应用于测控系统的基于Linux的嵌入式系统的设计...
  9. 软件测试--缺陷报告
  10. Java学习(二)Object
  11. 【数学建模】基于matlab模糊二元决策树【含Matlab源码 038期】
  12. 如何进行代理上网以及ccproxy设置
  13. Spring之bean标签属性详解
  14. linux解压带密码zip,linux下解压有密码的rar压缩包的方法
  15. 常见的系统漏洞安全扫描修复总结归纳
  16. 4GMF论坛主席卢伟谈4G全球发展概况
  17. 【TLD】改进后的TLD视频目标跟踪方法的MATLAB仿真
  18. matlab程序二不能用于负数,matlab中负数的二进制码如何求取
  19. 黑马程序员还收费 兄弟会都是免费的
  20. php wx.downloadimage,大神,wx.downloadImage 图片过期问题

热门文章

  1. OBJ(3D模型)文件格式
  2. 视频聊天软件开发都需要用到哪些三方服务?
  3. 综合能效管理系统(AcrelEMS-IDC)的应用-在某数据中心
  4. 如何在 iPhone、iPad 和 Mac 上压缩照片?
  5. 自考c语言程序设计02600,自考02600《C语言程序设计》模拟试卷十一
  6. 线性表的链式存储结构基本操作代码实现
  7. 如何解决没有指定在Windows运行或者它包含错误
  8. Quartz定时任务手动触发
  9. Qt调用工业相机之相机的触发模式及代码实现
  10. PLC仿真搭建问题与解答