package com.cy.demo1;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
public class Test2 {
public static void main(String[] args) {
List<qiufan> qiufans = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
int code = (int) (Math.random() * 200 + 1);
//一个方法 判断编号在囚犯集合中是否存在
if (codeTest(qiufans, code)) {
i--;
continue;
}
qiufan qf = new qiufan(code, i);
qiufans.add(qf);
}
System.out.println(qiufans);
//去掉囚犯方法 奇数位置去掉 while true循环去掉
while (true) {
List<qiufan> LastQiu = new ArrayList<>();
for (int i = 1; i < qiufans.size(); i += 2) {
LastQiu.add(qiufans.get(i));//去掉奇数位置后的囚犯 进入一个新的 集合
}
if (LastQiu.size() == 1) {
qiufan qiufan = LastQiu.get(0);
System.out.println("只剩下最后一个人" + qiufan.getId() + "位置" + qiufan.getNum());
break;
}
qiufans = LastQiu;//下一轮开始 从新的集合开始
}
}
public static boolean codeTest(List<qiufan> qiufans, int code) {
for (qiufan qiufan : qiufans) {
if (qiufan.getId() == code) {
return true;//存在重复
}
}
return false;
}
}
class qiufan {
private int id;
private int num;
public qiufan() {
}
@Override
public String toString() {
return "qiufan{" +
"id=" + id +
", num=" + num +
'}';
}
public void setId(int id) {
this.id = id;
}
public void setNum(int num) {
this.num = num;
}
public int getId() {
return id;
}
public int getNum() {
return num;
}
public qiufan(int id, int num) {
this.id = id;
this.num = num;
}
}
奇数囚犯问题
最新推荐文章于 2025-03-25 14:58:45 发布