算法--到3退出

本文通过一个简单的计数游戏介绍了算法实现的过程。游戏中500名参与者围成一圈,每数到3则被淘汰,直至最后一名胜出者。文章详细展示了使用Java编程语言如何模拟这一过程,并最终得出胜者的编号。

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

介绍:一群人围成一个圈,从头开始数数,输到3就退出。后面接着从1开始数,一直循环着转下去,直到台上只有一个人,那个人就是胜利者。

问题:假如500个人做这个游戏,第一个数数的人序号为1,那么序号为几的人是胜利者?

 public class Count3Quit{
	public static void main(String[] args){
		boolean[] arr=new boolean[500];//500长度的数组
		for (int i=0;i<arr.length;i++){
			arr[i]=true;			//数组初始化都是true
		}
		int leftCount=arr.length;		//记录剩下的人数,初始化也是500
		int countNum=0;				//记录喊得口号数,分别为1,2,3
		int index=0;				//记录当前位置
		while(leftCount>1){			//人数大于1是,就执行循环
			if(arr[index]==true){		//当前为true时,就执行括号里的代码,为false时该成员已经退出,就不用管他了
				countNum++;		//1,2,3往上加
				if(countNum==3){	//到3时
					countNum=0;	//计数为0,即下一个同学喊1
					arr[index]=false;	//该同学为false,退出了
					leftCount--;		//剩下的人数减1
				}
			}
			index++;		//当前位置跟随while循环一块加
			if(index==arr.length){	//当前位置为500时,从头开始
				index=0;
			}
		}
		for(int i=0;i<arr.length;i++){  //循环结束了
			if(arr[i]==true){		//找到true的那个人
				System.out.println(i);	//输出
			}
		}
		
	}
 }

输出为435,这是从0开始的,所以序号为436的同学为胜利者。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值