15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰.
直到最后一只猴子称为大王,问:哪只猴子会成为大王?
package test;
public class test8 {
/*
15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰.
直到最后一只猴子称为大王,问:哪只猴子会成为大王?
*/
public static void main(String[] args) {
//1.定义长度为15的数组,保存猴子,Boolean类型是为了判断猴子是否存活
boolean[] b = new boolean[15];
//2.依次遍历每一只猴子
//true未淘汰,false淘汰
for (int i = 0; i < b.length; i++) {
b[i] = true;
}
int num = 0;
//3.定义变量保存猴子报的数
int monkeyLeft = 15;
//4.定义变量保存剩余的猴子数
int index = 0;
//5.定义数组下标
while(monkeyLeft>1){
//6.循环,直到只剩最后一只猴子(猴子王)
//7.检测猴子是否已经淘汰
if(b[index]){//报数
num++;
//9.判断报数是否为7
if(num==7){
b[index]=false;//为7淘汰
monkeyLeft--;//猴子数减一
num=0;//报数归零
}
}
index++;//10.下标移动
//11.围成一圈---最后一个置为0
if(index==15){
index=0;
}
}
//遍历数组,找到最后活着的那个猴子王
for (int i = 0; i < b.length; i++) {
if(b[i]){
System.out.println(i+1);
}
}
}
}