约瑟夫环java简单实现
时间: 2023-11-20 11:55:14 浏览: 98
以下是Java简单实现约瑟夫环算法的代码和注释说明:
```java
import java.util.ArrayList;
import java.util.List;
public class JosephusProblem {
public static void main(String[] args) {
int n = 7; // 总人数
int k = 3; // 从第k个人开始报数
int m = 4; // 数到m的人出圈
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
list.add(i);
}
int index = k - 1; // 从第k个人开始报数,所以初始下标为k-1
while (list.size() > 0) {
index = (index + m - 1) % list.size(); // 计算出圈的人的下标
System.out.print(list.remove(index) + " "); // 输出出圈的人的编号
}
}
}
```
注释说明:
1. 首先定义总人数n、从第k个人开始报数k、数到m的人出圈m以及一个List集合用于存储所有人的编号。
2. 循环n次,将所有人的编号添加到List集合中。
3. 定义一个下标index,初始值为k-1,表示从第k个人开始报数。
4. 当List集合不为空时,计算出圈的人的下标,然后将该人的编号从List集合中移除并输出。
5. 计算下一个出圈的人的下标时,需要将当前下标加上m-1,然后对List集合的大小取模,这样可以保证下标不越界。
阅读全文