十五只猴子围成一圈选大王,依次1~7循环报数,报到7的猴子被淘汰,直到最后一只猴子称为大王,问,哪只猴子最后能称为大王?(约瑟夫环问题详解)

十五只猴子围成一圈,按1~7报数,报7者淘汰,直至最后一只猴子成为大王。文章探讨了约瑟夫环问题的多种解决方案,包括使用boolean数组和int数组的方法,最终找到猴王的位置。
摘要由CSDN通过智能技术生成

十五只猴子围成一圈选大王,依次1~7循环报数,报到7的猴子被淘汰,直到最后一只猴子称为大王,问,哪只猴子最后能称为大王?(多种方案解决)


用boolean数组解决方案(后面有用int数组解决的方案)

/** 
* @author Ziph
* @date 2020年2月23日
* @Email mylifes1110@163.com
*/
public class ChooseKing {
   
	public static void main(String[] args) {
   
		//定义一个长度为15的数组,即:15只猴子
		boolean[] m = new boolean[15];
		//初始化数组为true以便后续淘汰为false的猴子
		for (int i = 0; i < m.length; i++) {
   
			m[i] = true;
		}
		System.out.println("恭喜第" + print(choiceKing(m)) + "只猴子被选为大王!");
	}
	
	//选一只猴子,即定了要淘汰14只猴子
	public static boolean[] choiceKing(boolean[] m) {
   
		int monkeys;//记录为true的猴子数量
		int count = 0;//记录报的数字
		do {
   
			monkeys = 0;//每次初始化猴子数量
			for (int i = 0; i < m.length; i++) {
   
				if (m[i] == false) {
   //false为被淘汰的猴子
					continue;
				}
				count
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值