详细介绍信息请看第一篇稳定匹配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;
}
}
运行结果:
![这里写图片描述](https://img-blog.csdn.net/20171025232252259?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzI4NDcwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
Tony-Chen
2017.10.25