1.数组来求解约瑟夫环,按照杀人的逻辑来求解
package JavaClassFiledWork;
import java.util.Arrays;
public class YueSeFu {
//数组解法
static void arraySolve(int[] target,int count) {
int alive=target.length;
int p=0;
while(alive>1) {
//当存活的数量大一些时
int i = 0;
for (; i < count; ) {
//p的指示的位置是死了人的位置,
//在数最后的数时要注意分界条件
if (target[p] == 0) {
p = (p + 1) % target.length;//p每次往前走一个
//等于0的话就说明已经死了,要继续往前数一个
}else {
//找下一个活人
i++;//已经找到了一个活人
if(i==count){//活人已经都找到了
break;
}
//找下一个活人
p = (p + 1) % target.length;
}
}
target[p]=0;//kill 1 people
alive--;
}
}
public static void main(String[] args) {
int[] arrat=new int[]{1,2,3,4,5};
arraySolve(arrat,3);
System.out.println(Arrays.toString(arrat));
}
}
2.链表来求解约瑟夫环,基本思想同上一个相同