约瑟夫环用java代码
时间: 2024-03-02 18:46:49 浏览: 204
约瑟夫环是一个经典的数学问题,可以用循环链表来实现。以下是用Java代码实现约瑟夫环的示例:
```java
import java.util.LinkedList;
public class JosephusCircle {
public static int josephus(int n, int k) {
LinkedList<Integer> circle = new LinkedList<>();
for (int i = 1; i <= n; i++) {
circle.add(i);
}
int index = 0;
while (circle.size() > 1) {
index = (index + k - 1) % circle.size();
circle.remove(index);
}
return circle.get(0);
}
public static void main(String[] args) {
int n = 7; // 总人数
int k = 3; // 报数到k的人出列
int survivor = josephus(n, k);
System.out.println("最后幸存者的编号是:" + survivor);
}
}
```
在上面的代码中,我们使用了一个循环链表来表示约瑟夫环,初始时将所有人的编号添加到链表中。然后,我们通过循环和取模运算来模拟报数和出列的过程,直到只剩下最后一个人为止。
运行上述代码,将输出最后幸存者的编号。
阅读全文