首页 > 代码库 > 300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子

300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子

public static void main(String[] args) {
		/*
		 *  300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子,
		 *  问最后剩下的一个是从指定位置开始计数的第几个人?
		 */
		
		int num[]=new int[300];
		int i=0;     // 数组的下标计数器 0---299
		int count=0; // 退出的人数计数器 0---299
		int n=1;     // 数数的计数器         1---3
		
		while(count<299){
			// 数组的值如果是1,代表该位置的人不存在
			// 不存在的位置则直接跳过
			if(num[i]==1){
				i++;
				if(i>299) i=0;
				continue;
			}
			// 数数计数器值为3,代表该位置上的人需要退出
			if(n==3){
				num[i]=1;  // 代表退出
				count++;   // 退出的人数计数器累加
//				System.out.println("退出序号:"+(i+1)+",计数器:"+count);
			}
			
			n++;
			if(n>3) n=1;
			i++;
			if(i>299) i=0;
		}
//		System.out.println(count);
		for(i=0; i<num.length; i++){
			if(num[i]==0){
				System.out.println("最后剩下的序号为:"+(i+1));
			}
		}
	}

  

300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子