miracle just wanna be better

猴子淘汰问题

2019-07-04
miracle

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+"是大王");
	}

}

Comments

Content