任务描述:
有n个人围成一个圆圈分别编号1~n,从第1个到m循环报数,凡是报到m者离开,求n个 人离开圆圈的次序。
任务要求:
代码示例:
package M0317_0331;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class m240326 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入数值n, m: ");int n = scanner.nextInt();int m = scanner.nextInt();List<Integer> result = josephus(n, m);System.out.println("输出结果示例:");for (Integer integer : result) {System.out.print(integer + " ");}}public static List<Integer> josephus(int n, int m) {List<Integer> result = new ArrayList<>(); // 用于存放结果的列表List<Integer> list = new ArrayList<>(); // 用于存放初始元素的列表// 初始化列表,添加1到n的元素for (int i = 1; i <= n; i++) {list.add(i);}int index = 0; // 当前操作的索引// 循环删除元素,直到列表为空while (!list.isEmpty()) {// 计算下一个要删除的元素的索引index = (index + m - 1) % list.size();// 删除该元素,并将其添加到结果列表中result.add(list.remove(index));}return result;}}