约瑟夫环
原理:约瑟夫环可以理解为,有一个数组。数组中每一个元素都看作一个人。数组进行循环处理,数到m的时候,元素(人)淘汰。直到数组最后只有一个人存活。
代码实现
public static int joseph(int[] arr){
int totalPeople = arr.length;
int count = 0;
for(int i=0;totalPeople>1;i = ++i % arr.length){
if(arr[i] != -1){
count++;
}
if(count == 3){
arr[i] = -1;
count = 0;
totalPeople--;
}
}
for(int i=0;i<arr.length;i++){
if(arr[i] != -1){
return arr[i];
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = new int[10]; //在这里的[ ]中改变数组长度
for(int i=0;i<arr.length;i++){
arr[i] = i+1;
}
System.out.println(joseph(arr));
输入10得到最终结果4