【算法】稳定匹配二(JAVA版)

2023-11-15

详细介绍信息请看第一篇稳定匹配C++版这里不再过多讲述:

下文直接贴代码:

PiPei.java

package com.dt.pipei;

import java.util.Scanner;

public class Pipei {

    public static void main(String[] args) {

        System.out.println("请输入人数:");
        Scanner scanner=new Scanner(System.in);
        int NUM=scanner.nextInt();
        People man[]=new People[NUM];
        People lady[]=new People[NUM];

        //初始化男士心中女士的排名
        for(int i=0;i<NUM;i++) {
            man[i]=new People();
            int  a[]=new int[NUM];                                      //创建数组存放喜欢异性的排名
            for(int j=0;j<NUM;j++) {
                System.out.println("请输入第"+i+"名男士喜欢的第"+j+"名女士:");
                int lover=scanner.nextInt();
                a[j]=lover;
            }
            man[i].setRank(a);
        }
        //初始化女士心中男士的排名
        for(int i=0;i<NUM;i++) {
            lady[i]=new People();
            int a[]=new int[NUM];                                       //创建数组存放喜欢异性的排名
            for(int j=0;j<NUM;j++) {
                System.out.println("请输入第"+i+"名女士喜欢的第"+j+1+"名男士:");
                a[j]=scanner.nextInt();
            }
            lady[i].setRank(a);
        }
        boolean flag;
        while (true) {
            flag=true;
            //男士表白
            for(int i=0;i<NUM;i++) {
                if(man[i].getYuehui()==false) {
                    flag=false;
                    int location=man[i].getRank()[man[i].getBetter()];
                    man[i].setBetter(man[i].getBetter()+1);
                    if(lady[location].getYuehui()==false) {
                        man[i].setYuehui(true);
                        lady[location].setYuehui(true);
                        man[i].setPresent(location);
                        lady[location].setPresent(i);
                    }else if (lady[location].getYuehui()==true) {
                        int before = 0,latter = 0;
                        for(int j=0;j<NUM;j++) {
                            if(lady[location].getRank()[j]==i) {
                                latter=j;
                            }
                            if(lady[location].getRank()[j]==lady[location].getPresent()) {
                                before=j;
                            }
                        }
                        if(latter>before) {     //喜欢原来

                        }
                        if(before>latter) {     //喜欢小三
                            man[lady[location].getPresent()].setPresent(100);
                            man[lady[location].getPresent()].setYuehui(false);
                            lady[location].setPresent(i);
                            man[i].setPresent(location);
                            man[i].setYuehui(true);
                        }
                    }
                }
            }
            if(flag) {
                break;
            }
        }
        scanner.close();
        for(int i=0;i<NUM;i++) {
            System.out.println(i+"and"+man[i].getPresent()+"\n");
        }
    }
}

Person.java

package com.dt.pipei;

public class People {
    private Boolean yuehui;
    private String name;
    private int[] rank;
    private int present;
    private int better;

    public People() {
        yuehui=false;
        better=0;
        present=100;
    }

    public Boolean getYuehui() {
        return yuehui;
    }

    public void setYuehui(Boolean yuehui) {
        this.yuehui = yuehui;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    public int[] getRank() {
        return rank;
    }

    public void setRank(int[] a) {
        this.rank = a;
    }

    public int getPresent() {
        return present;
    }

    public void setPresent(int present) {
        this.present = present;
    }

    public int getBetter() {
        return better;
    }

    public void setBetter(int better) {
        this.better = better;
    }
}

运行结果:
这里写图片描述

Tony-Chen
2017.10.25

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【算法】稳定匹配二(JAVA版) 的相关文章

随机推荐

  • python怎么调用另一个py文件的变量_Python中py文件引用另一个py文件变量的方法

    最近自己初学Python 在编程是遇到一个问题就是 怎样在一个py文件中使用另一个py文件中变量 问题如下 demo1代码 import requests r requests get http www baidu com r encodi
  • 【Linux】常用指令汇总

    目录 1 文件和目录操作 2 进程管理和查询 3 压缩和解压操作 4 系统信息和管理 5 远程和下载操作 6 用户和权限管理 7 时间和日期操作 8 运行和停止程序 9 其他操作 如果这篇文章对你有所帮助 渴望获得你的一个点赞 以下示例涵盖
  • 3S基础知识:VC6.0+MapX编程总结

    一 MapX的帮助 MapX的官方帮助文档是 MapX在线帮助 个人认为 这套文档过于简单 系统性偏差 与ArcEngine的帮助文档不可比 很多MapX的开发技巧在 MapX在线帮助 中查找不到 只能在互联网上搜索 本文试图从一个程序员的
  • 1V转5V芯片,三个元件即可组成完整的稳压方案

    1V低电压要转成5V的电压 需要1V转5V的芯片 由于1V输入 所以不需要指望能输出多大的电流 压差和1V的供电电压意味着供电电流也是无法做大的了 一般1V转5V的输出电流在0MA 100mA 一般60MA应用多 1V转5V电路的BOM物料
  • [LeetCode]202. Happy Number(判断正整数是不是Happy Number)

    202 Happy Number 原题链接 Write an algorithm to determine if a number is happy A happy number is a number defined by the fol
  • java.lang.Integer线程安全吗?

    java lang Integer线程安全 因为 private final int value 不可变
  • SQL实战5——统计活跃间隔对用户分级结果

    现有用户行为日志表tb user log 问题 统计活跃间隔对用户分级后 各活跃等级用户占比 结果保留两位小数 且按占比降序排序 注 用户等级标准简化为 忠实用户 近7天活跃过且非新晋用户 新晋用户 近7天新增 沉睡用户 近7天未活跃但更早
  • 华为机试HJ11 数字颠倒

    HJ11 数字颠倒 Python 题目 解题思路 代码 结果 题目 解题思路 1 输入 转字符串 倒序输出即可 python可以很取巧 代码 print input 1 结果
  • 使用Python批量转换彩色图片到灰度图片

    当涉及到图像处理和计算机视觉时 有时需要将彩色图片转换为灰度图片 一张一张使用PS等工具转换十分复杂且没有必要 今天介绍的这种方法用到了Pillow库 使用Pillow库来打开 加载并转换彩色图像 并将图像储存在另一个文件夹里 具体步骤如下
  • [春秋杯2023]Misc sudo(记CVE-2023-22809)

    对我来说还是有点难了 web方向的phpstudy那道题 不知道为什么 xss就是打不进去 第二道python反序列化还没有理解 所以就先发一道misc MISC sudo 记CVE 2023 22809 一 漏洞范围 sudo 1 8 0
  • 3.动态库的动态加载、错误处理、GDB调试

    库文件 代码的仓库 当运行a out时 a out是链接动态库的 于是a out和动态库都需要加载到物理内存中 但是 a out可能运行十分钟 但是需要用到的动态库却只需要使用1分钟 则资源浪费 所以引入动态加载的概念 当需要用动态库的时候
  • OceanBase介绍

    OceanBase是什么 OceanBase是一个支持海量数据的高性能数据库系统 实现了数千亿条记录 数百TB数据上的跨行跨表事务 由淘宝核心系统研发部 运维 DBA 广告 应用研发等部门共同完成 OceanBase解决什么问题 许多公司的
  • 编译驱动时报错:./arch/x86/include/asm/atomic64_64.h: At top level:

    在编译6ULL驱动的时候程序报错 base c 4 arch x86 include asm atomic64 64 h At top level arch x86 include asm atomic64 64 h 31 33 error
  • Java里的锁

    前言 锁 最初是人类为了保护自己的财产而发明的一种用钥匙才能开启的装置 防范的是外部人员 正常手段下没有钥匙是不能绕过物理锁的 而在程序世界里 锁的设计则是为了保护数据资源 但并不能防范外部攻击 只能算是内部协作的一个约束 无论内外部 只要
  • Android APK反编译技巧全讲解

    Android APK反编译技巧全讲解 导言 在我们安卓开发当中 我们不仅需要掌握基础的开发技能 也需要掌握软件的安全技能 这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件 同时也可以让自己的核心技术不会被别人所盗取 首先我们应
  • ul li ol 解决去除默认点 和 空白问题 缩进问题

    前面的空白 其实这段空白叫做 缩进 明白是缩进之后 在网上能搜到一堆处理的方法 使用firebug调试了很久 这段空白明明没有对应的样式控制啊 把margin left设置成0px也没用 后来反应过来 原来是缩进 据此搜索到解决办法 直接解
  • 不同平台的C/C++标准库

    1 C C 标准 C C 所涉及到的参与者 根据角色的不同 可以分为以下3类 C C 标准起草者 主要在ISO标准组织 International Organization for Standardization 他们负责对应C C 标准相
  • 元学习MAML算法详解

    Meta learning Meta learning 基本定义 元学习 又称 学习如何学习 就像我们人类学习新知识往往从以往得经验出发而很少从头开始一样 元学习以一种系统得 数据驱动得方式从先前得经验中学习 是一个可用于描述所以基于其他先
  • 【实操案例十一】使用try-except手动捕获异常 实例代码及运行效果图!

    任务一 编写程序输入学员成绩 异常捕获忘了的同学 可以参考这个 Bug的常见类型及异常处理机制 任务一 编写程序输入学员成绩 i int input 请输入学员成绩 if 0 lt i lt 100 print i else raise E
  • 【算法】稳定匹配二(JAVA版)

    详细介绍信息请看第一篇稳定匹配C 版这里不再过多讲述 下文直接贴代码 PiPei java package com dt pipei import java util Scanner public class Pipei public st