Advertisement

将有500个小朋友排成一个圈。从第一个开始报数,在每轮中将报到3的小朋友淘汰。接着继续从1开始报数,在每轮中将报到3的小朋友淘汰。通过数组模拟计算最后剩下的孩子是谁。

阅读量:

**问题:
假设有500名儿童围成一个环形,从第一位开始依次报数,每当数到第三位时,该儿童将被淘汰,随后继续从1开始进行下一轮计数,重复此过程直至仅剩一名儿童。请利用数组结构模拟这一过程。**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].

全部评论 (0)

还没有任何评论哟~