package language_basic;
/**
* 约瑟夫问题
* 一定数量的人围一圈,从第一个人开始报数 ,数到三的出局,直到剩下一个人,求最后剩下的人的编号
* @author 郝楠
*
* 2009-8-25下午05:28:23
*/
public class Count3Remove {
public static void count3Remove(boolean array[]){
//将数组内的元素全部置为true
for (int i = 0; i < array.length; i++) {
array[i] = true;
}
//定义计数器
int counter = 0;
//定义剩余的人数
int leftLength = array.length;
//定义下标
int index = 0;
while(leftLength > 1){
if(array[index] == true){
counter++;
if(counter == 3){
array[index] = false;
counter = 0;
leftLength--;
}
}
index++;
if(index == array.length){
index = 0;
}
}
for (int i = 0; i < array.length; i++) {
if(array[i] == true){
System.out.println("最后剩余人的编号是"+(i+1));
}
}
}
public static void main(String[] args) {
boolean array[] = new boolean[500];
count3Remove(array);
}
}