// 移动元素 只需要将前面的元素覆盖 要移动的开始位置 移动的最后一个位置
private static void moveItem(int[] arr, int start, int stop) {
for (int i = start; i < stop - 1; i++) {
arr[i] = arr[i + 1];
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 读入变量
int n = in.nextInt();
int[] data = new int[n];
// 读入数据
for (int i = 0; i < n; i++) {
data[i] = i + 1;
}
// 当前要 踢出 的元素
int now = 0;
int dis = in.nextInt();
// 移动的距离 因为移动后 当前位置就是1 所以只需要移动 dis-1个 位置
dis = dis - 1;
// 先把数据拿出来 再移动覆盖就行
// 用n 表示数据的个数
int count=1; //计数
while (n > 0) {
// 算下一个被踢出的元素
now = (now + dis) % n;
System.out.printf("第%d个被踢出的编号:",count++);
System.out.println(data[now]);
moveItem(data, now, n);
n--;
}
}
}
约瑟夫环之基于数组
最新推荐文章于 2021-11-21 06:40:17 发布
博客围绕约瑟夫环问题,介绍了基于数组的实现方式。约瑟夫环问题是信息技术领域常见问题,通过数组来解决该问题,能体现数组在特定算法场景中的应用,为相关算法设计提供思路。
535

被折叠的 条评论
为什么被折叠?



