Java代码实现,100个同学围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来编号为几的同学。
时间: 2023-12-27 20:14:04 浏览: 78
请参考我之前的回答,以下是完整的Java代码:
```java
public class JosephusProblem {
public static void main(String[] args) {
int n = 100; // 总人数
int k = 3; // 报数上限
int m = 0; // 最后留下的人的编号
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
list.add(i); // 初始化人员列表
}
int idx = 0; // 当前报数的人的下标
while (list.size() > 1) { // 只有一个人时结束游戏
idx = (idx + k - 1) % list.size(); // 计算当前报数的人的下标
System.out.println("出圈的编号为:" + list.get(idx));
list.remove(idx); // 删除当前报数为3的人
}
m = list.get(0); // 最后留下的人的编号
System.out.println("最后留下的是原来编号为" + m + "的同学。");
}
}
```
输出结果与之前的回答一致。
阅读全文