使用Java实现约瑟夫问题
时间: 2024-05-03 19:22:12 浏览: 5
约瑟夫问题是一个经典的数学问题,描述如下:
有n个人围成一圈,从第一个人开始报数,数到m的人出圈,然后从出圈的下一个人继续报数,再数到m的人出圈,直到所有人出圈为止。求出出圈的顺序。
使用Java实现约瑟夫问题的代码如下:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class JosephusProblem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入总人数n:");
int n = scanner.nextInt();
System.out.print("请输入报数的间隔m:");
int m = scanner.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
list.add(i);
}
int index = 0;
while (list.size() > 1) {
index = (index + m - 1) % list.size(); // 计算出圈的人的位置
System.out.println("出圈的人是:" + list.get(index));
list.remove(index); // 将出圈的人从列表中移除
}
System.out.println("剩下的人是:" + list.get(0));
}
}
```
运行程序后,输入总人数n和报数的间隔m,程序会输出出圈的人的顺序以及最后剩下的人。