算法之约瑟夫问题

约瑟夫问题 
从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--;
     }
     }
    }
   }
}.net

转载:blog

http://blog.csdn.net/m372897500/article/details/51469963get

相关文章
相关标签/搜索