delegate

导航

 

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

转载:

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

posted on 2017-07-31 11:20  jsonUserList  阅读(112)  评论(0编辑  收藏  举报