Java实现约瑟夫环,以JosephusProblem为类名
时间: 2023-07-16 13:12:08 浏览: 41
好的,以下是Java实现约瑟夫环的代码,以JosephusProblem为类名:
```java
import java.util.ArrayList;
public class JosephusProblem {
public static int josephus(int n, int k) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
list.add(i);
}
int index = 0;
while (list.size() > 1) {
index = (index + k - 1) % list.size();
list.remove(index);
}
return list.get(0);
}
public static void main(String[] args) {
int n = 7;
int k = 3;
int survivor = josephus(n, k);
System.out.println("The survivor is: " + survivor);
}
}
```
代码说明:
- `josephus`方法接收两个参数:`n`表示总人数,`k`表示每次报数到第几个人出列。
- 在方法中,我们使用`ArrayList`来存储参与游戏的每个人的编号,初始化时将`1~n`的编号放入`ArrayList`中。
- 使用`while`循环,每次循环时计算出下一个出列的人的索引,然后将其从`ArrayList`中移除。
- 最后,当`ArrayList`中只剩下一个人时,返回该人的编号,即为幸存者的编号。
- 在`main`方法中,我们调用`josephus`方法,并输出幸存者的编号。