import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
//输入一个数n,代表参与人数
Scanner scanner = new Scanner(System.in);
System.out.print("请输入参与数");
int n = scanner.nextInt();
System.out.print("请输入淘汰值");
int m = scanner.nextInt();
//定义数组保存每个人的状态:true淘汰,false未淘汰(默认每个人的状态)
boolean[] isOut = new boolean[n];
//定义变量保存报数人的下标
int index = 0;
//定义变量保存玩家报的数
int number = 0;
//定义变量保存剩余的人数
int surplus = n;
//从第一个人开始循环报数
while (surplus > 1) {
//判定当前报数人是否被汰
if (!isOut[index]) {
//被淘汰
if (++number % m == 0) {
isOut[index] = true;
//记录剩余人数
surplus--;
}
}
index++;
(约瑟夫环问题)从控制台输入两个数n和m,n代表参与的游戏人数,m代表淘汰值,n个人围成一圈开始报数,报到m或m的倍数被淘汰,直到剩余一个人,输出这个人的原始位置
最新推荐文章于 2022-05-04 18:45:01 发布
本文介绍如何使用Java解决约瑟夫环问题,玩家按圈报数,报到特定值m的人将被淘汰,直至剩一人。通过程序演示找到最后获胜者的原始位置。
摘要由CSDN通过智能技术生成