约瑟夫问题
从1到500 每次数到3就踢出去 循环执行 最后剩下的那个数是多少
public class ysf{
public static void main(String[] args){
boolean[] arr =new boolean[500];
for(int i=0;i<arr.length;i++){
arr[i]=true;
}
int num=0;//小圈子里面的数
int left=arr.length;//剩下的数的大小
for(int i=0;;i++){//从0开始向上循环
if(i==arr.length){
i=0;
}
if(arr[i]==true){
if(left==1){
System.out.println("剩下的数是"+(i+1));
break;
}
num++;
if(num==3){
num=0;//从0开始
arr[i]=false;
left--;
}
}
}
}
}
转载: