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的人退出圈子
原文:http://www.cnblogs.com/jiuer/p/6720193.html