问题:15个猴子围一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。请问哪只猴子?
知识点:循环
思路:每只猴子都设为true,然后循环报数,到7时变成false,下次循环跳过false的猴子,直到true的数量=1时结束循环。输出true的那个的索引值即可。
boolean[] monkey = new boolean[15];
for (int i = 0; i < monkey.length; i++) {
monkey[i]=true;
}
int count=0;
int trueMonkeys=monkey.length;
while (trueMonkeys!=1){
for (int i = 0; i <monkey.length ; i++) {
if (monkey[i]==false){
continue;
}
count++;
if (count%7==0){
monkey[i]=false;
trueMonkeys--;
}
}
}
int monkeyKing=0;
for (int i = 0; i < monkey.length; i++) {
System.out.print(monkey[i]+"\t");
if (monkey[i]==true) monkeyKing=i+1;
}
System.out.println("第"+monkeyKing+"只猴子是猴王");
输出结果:
false false false false true false false false false false false false false false false 第5只猴子是猴王