循环报数游戏,有n个人,每一个人编号从1开始,依次编号到n。从1到3报数,报3的退出游戏,得出最后获胜人的编号
import java.util.Scanner;
//报数,数到3退出,输出最后一个人
public class TestDemo1 {
public static int circleGame(int[] arr,int n) {
int size = arr.length;//数字个数,记录当前剩余人数
int count = 0;
for (int i = 0; size >= 1; i = ++i % arr.length) {
if (arr[i] != -1) {
count++;
}
if (count == n) {
arr[i] = -1;//设定报3记为“-1”
size--;
count = 0;
}
if (size == 1) {
break;
}
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] != -1){
return arr[i];
}
}
return -1;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int[] arr=new int[n];
for (int i=0;i<arr.length;i++){
arr[i]=i+1;
}
n=circleGame(arr,3);
System.out.println(n);
}
}