猴子选大王---boolean数组的实现

本文通过一个具体的算法实例——15只猴子围成一圈,按1-7报数并淘汰报7的猴子,最终选出猴王的过程,介绍了使用boolean数组实现这一问题的方法。最终结果显示第5只猴子成为猴王。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题的描述:15个猴子围成一圈选大王, 依次1-7循环报数, 报到7的猴子被淘汰, 直到最后一只猴子成为大王。 问: 哪只猴子会成为大王?

本文尝试用boolean数组进行实现,代码如下所示:

package UNI;

import java.util.Arrays;

public class monkey {
	public static void main(String[] args) {
		//定义一个状态数组(false表示还没被淘汰,false表示已被淘汰)
		boolean[] state=new boolean[15];
		//报数
		int count=0;
		//下标
		int i=0;
		while ((contains(state))) {
			//定义一个环形的猴子圈
			i=(i==15)?0:i;
			//记数
             if (!state[i]) {
            	 count++;
			}
             i++;
			if (count%7==0) {
				state[i-1]=true;
			count=0;
			}	
			if (Num(state)==14) {
				break;
			}
		}
		
			System.out.println(Arrays.toString(state));
		
	}
//构造一个判断是否含有false的方法
	private static boolean contains(boolean[] ss) {
		for (int i = 0; i < ss.length; i++) {
			if (!ss[i]) {
				return true;
			}
		}
		return false;
	}
	
	private static int Num(boolean[] tt) {
		int count=0;
		for (int i = 0; i <tt.length; i++) {
			count=(tt[i]==true)?(count+1):count;
		}
		return count;
		
	}
	
	
}

运行结果如下:

[true, true, true, true, false, true, true, true, true, true, true, true, true, true, true]

我们可以发现第5只猴子为猴王

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值