经典题目:(标记练习)
15只猴子围成圈,依次报数1-7,报到7的淘汰,从下一只开始报数,利用数组和标记
//首先,定义15只猴子的数组和标记
boolean[] b = new boolean[15];
//循环遍历数组标记为true
for (int i = 0; i < 15; i++) {
b[i] = true;
}
//定义猴子数量
int monkeynum = 15;
//定义下标
int index = 0;
//定义报数
int number = 0;
//如果猴子数量大于一,进入循环,进一步检测猴子是否出局
while (monkeynum>1){
//判断猴子是否出局
if(b[index]){
//可以进入判断则代表猴子未出局,继续报数,报数加一
number++;
//如果报数等于7,淘汰,下一只猴子重新报数,猴子数量减一
if(number == 7){
b[index] = false;
monkeynum--;
number=0;
}
}
//继续判断下一只猴子,数组下标加一
index++;
//如果循环到数组最后一个,需要把下标挪到开始的猴子
if(index == 15){
index = 0;
}
}
//循环遍历,输出选出的猴子大王(由于第index只判断出局,所以猴子大王为下一只)
for (int i = 0; i < b.length; i++) {
if(b[i]){
System.out.println("第"+(i+1)+"只猴子为大王");
}
}