ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

有500个小朋友,围成一个圈,从第一个开始数1,数到3的小朋友退出,后面继续从1开始数,数到3的小朋友退出,这样执行下去,最后留下的小朋友是哪个?用数组模拟。

2021-04-03 19:29:09  阅读:250  来源: 互联网

标签:数到 kids int state 退出 小朋友 500 kid


**问题:
有500个小朋友,围成一个圈,从第一个开始数1,数到3的小朋友退出,后面继续从1开始数,数到3的小朋友退出,这样执行下去,最后留下的小朋友是哪个?用数组模拟。**Java实现

public class Test{
	public static void main(String[] args) throws Exception {
		int OutNum = 0;	//已退出的小朋友的个数
		int cnt = 0;	//小朋友数的数(1、2、3)
		kid kids[] = new kid[500];	//创建500个小朋友
		for(int i=0;i<500;i++)
		{
			kids[i] = new kid();
		}
		while(OutNum<499)
		{
			for(int i=0;i<500;i++)
			{
				if(kids[i].state==0)	//只有状态为没退出的小朋友才能数数
				{
					cnt++;				//数数
					if(cnt==3) 			//判断数的是不是3
					{
						kids[i].state = 1;	//如果数的数是3,该小朋友状态设置为退出
						OutNum++;			//已退出的小朋友的个数加一
						cnt = 0;			//准备重新从1开始数数
					}
				}
			}
		}
		for(int i=0;i<500;i++)
		{
			if(kids[i].state == 0)	//找出最后没退出的小朋友
				System.out.printf("The last kid is:%d",i+1);
		}
	}
}
class kid{
	public int state;	//0表示该小孩的状态是没退出,1表示该小孩的状态是已退出
	kid(){
		state = 0;		//初始时小孩的状态是没退出
	}
}

输出结果:The last kid is:436

标签:数到,kids,int,state,退出,小朋友,500,kid
来源: https://blog.csdn.net/hechilai/article/details/115419442

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有