算法之約瑟夫問題

約瑟夫問題 
從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

相關文章
相關標籤/搜索