1、
有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到3 的人退出圈子,问最后留下的是原来第几号的那位。
/**
* 有n个人围成一圈,顺序排号
* 从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
*/
import java.util.Scanner;
public class YueSeFuHUAN {
public static void main(String[] args){
Scanner console = new Scanner(System.in);
System.out.println("请输入总人数:");
int sum = console.nextInt();
int a = count(sum);
System.out.println("最后留下的是原来的第" + a + "位");
}
public static int count(int sum) {
int[] arr = new int[sum];
for(int i = 0; i < sum; i++){
arr[i] = 1; //未退出为1 退出为0
}
int number = 0; //报数
int j = 0;
int alive = sum;
//当没人时退出循环
while (alive != 0) {
//1报数 0不报数
if (arr[j] == 1) {
number ++; //报数
if (number == 3){
alive --; //总人数减1
number = 0; //重新报数
arr[j] = 0; //退出报数
System.out.println(j+1);
if (alive == 0) {
break;
}
}
}
j++;
j = j % sum