package cn.itcast.execise;
/*
* 15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,
* 直到最后一只猴子成为大王。问:哪只猴子会成为大王?
*
*
* */
public class Execise05 {
public static void main(String[] args) {
//布尔数组---表示猴子的状态
boolean[] bs=new boolean[15];
//初始化 true表示的是未淘汰 false就表示淘汰
for (int i = 0; i < bs.length; i++) {
bs[i]=true;
}
//剩余猴子数
int monkeyleft=15;
//报数
int num=0;
//数组下标
int index=0;
//循环
while(monkeyleft>1){
//判断猴子是否被淘汰
if(bs[index]){
//开始报数
num++;
}
//知道num==7时候,淘汰猴子
if(num==7){
//报数置为0
num=0;
//数组元素置为false
bs[index]=false;
//猴子数减少
monkeyleft--;
}
//下标往后移
index++;
//到最后一个猴子置为0
if(index==15){
index=0;
}
}
//遍历原数组
for (int i = 0; i < bs.length; i++) {
if(bs[i]){
System.out.println("monkeyking:"+(i+1));
break;
}
}
}
}
算法:猴子选大王问题(约瑟夫环)
猜你喜欢
转载自blog.csdn.net/weixin_44519263/article/details/88198490
今日推荐
周排行