约瑟夫环java数组实现
时间: 2023-11-26 16:43:10 浏览: 134
约瑟夫环问题的Java数组实现可以参考以下代码:
```
import java.util.Scanner;
public class 约瑟夫环问题 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); // 输入总人数
int k = sc.nextInt(); // 输入报到需要淘汰的数字
int[] arr = new int[num]; // 使用数组进行模拟每个人,并初始化为0,若被淘汰则将数组中对应的数据转换为1即可
int sum = num; // 记录总人数
int index = 0; // 初始的下标
int count = 0; // 计算次数
while (sum > 1) {
if (arr[index] == 0) {
count++; // 若当前未被淘汰,则将计数器加1
if (count == k) {
arr[index] = 1; // 若此人报到需要淘汰的数字,将其标为1,意思是已淘汰
count = 0; // 将此人淘汰后,在从0开始计数淘汰
sum--; // 人员被淘汰,则将剩余人数减1
}
}
index++;
if (index == num) { // 到达数组末尾则将索引指向数组头部
index = 0;
}
}
for (int i = 0; i < num; i++) {
if (arr[i] == 0) {
System.out.println(i + 1);
}
}
}
}
```
阅读全文