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