java约瑟夫问题代码
时间: 2024-01-02 22:04:31 浏览: 65
约瑟夫问题代码
public class JosephProblem {
public static void main(String[] args) {
int n = 7; // 总人数
int m = 3; // 数到第几个人就出列
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = i + 1; // 初始化数组,每个人的编号为i+1
}
int index = 0; // 数组下标,表示当前数到第几个人了
int count = 0; // 计数器,表示已经出列的人数
while (count < n) {
for (int i = 0; i < m; i++) {
if (arr[index] == -1) { // 如果当前人已经出列了,就继续往后数
i--;
}
index++;
if (index == n) { // 数到最后一个人后,从头开始重新数
index = 0;
}
}
System.out.print(arr[index - 1] + " "); // 输出出列的人的编号
arr[index - 1] = -1; // 标记出列的人
count++;
}
}
}
阅读全文