package com.ligong;
import java.util.Scanner;
public class Demo37_2 {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.close();
//定义数组变量标识某人是否还在圈内
boolean[] isIn = new boolean[n];//定义n个位置
for(int i=0;i<isIn.length;i++)
isIn[i] = true;//定义每个人都在圈内
//定义圈内人数、报数、索引
int inCount = n;//定义当前圈内人数
int countNum = 0;//当前报数
int index = 0;//当前索引
while(inCount>1){//如果人数大于1
if(isIn[index]){//当前索引下人还没退出
countNum++;//报1
if(countNum==3){//i为2时候,报3
countNum = 0;//这个时候重新进行报数
isIn[index] = false;//同时这个时候,这个人退出
inCount--;
}
}
index++;
if(index==n)
index = 0;
}
for(int i=0;i<n;i++)
if(isIn[i])
System.out.println("留下的是:"+(i+1));
}
}
约瑟夫环问题Java实现
最新推荐文章于 2022-12-19 13:23:13 发布