java约瑟夫环问题数组
时间: 2023-11-05 15:05:32 浏览: 155
分别用数组和链表解决约瑟夫环问题。 数组和链表.doc
可以使用数组来解决约瑟夫环问题。下面是一个用Java实现的约瑟夫环问题数组解法的示例代码:
```java
public class JosephusProblem {
public static int josephus(int n, int k) {
// 创建一个数组来表示所有人
boolean[] people = new boolean[n];
for (int i = 0; i < n; i++) {
people[i] = true;
}
int count = 0; // 记录报数的人数
int index = 0; // 记录当前位置
while (count < n - 1) {
int num = 0; // 记录当前报数的次数
while (num < k) {
if (people[index]) {
num++;
}
index = (index + 1) % n;
}
// 报到k的人离开
people[(index - 1 + n) % n] = false;
count++;
}
// 返回最后剩下的人的索引
for (int i = 0; i < n; i++) {
if (people[i]) {
return i;
}
}
return -1; // 若数组为空则返回-1
}
public static void main(String[] args) {
int n = 7; // 人数
int k = 3; // 报数到k的人离开
int survivorIndex = josephus(n, k);
System.out.println("最后幸存者的索引为: " + survivorIndex);
}
}
```
输出结果:
```
最后幸存者的索引为: 3
```
阅读全文