15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问:哪只猴子会成为大
王?
public class Demo2 {
public static void main(String[] args) {
int a = 0;//定义一个数,每7次淘汰一个
int b = 0;//定义一个数,每淘汰一个猴子就+1
int flag = 0;//定义一个数,确定猴子的下标
boolean[] arr = new boolean[15];
/*
* 把所有的猴子都设为true
* */
for (int i = 0; i < 15; i++) {
arr[i] = true;
}
/*
* 一直循环,直到淘汰14只猴子为止
*
* */
while (true) {
for (int i = 0; i < 15; i++) {
if (arr[i] == false) {
continue;//如果该猴子已经被淘汰,则跳过
}
a++;//猴子喊一次到
if (a % 7 == 0) {
arr[i] = false;// 每数7次,该猴子被淘汰为false
b++;//淘汰一只猴子
}
}
if (b == 14) {
break;//淘汰14只猴子,停止
}
}
/*
* 遍历所有猴子,遍历一个就加1,得到猴子位置
* */
for (boolean x : arr) {
flag++;
if (x == true) {
break;
}
}
System.out.println(flag+"是大王");
}
}