约瑟夫问题
约瑟夫问题,又名丢手绢问题
public class YsfSolve {
public static void main(String[] args) {
new YsfSolve().showYsf(500,6); //500 个人数到 8 出去
}
//遇到问题先有思路再解题
private void showYsf(int count,int size){
//1.把人存到list 里边
List<Integer> sums = new ArrayList<Integer>();
for(int i=1;i<=count;i++){
sums.add(i);
}
// 从第K个开始计数
int k=0;
while(sums.size()>0){
k=size+k;
k = k%(sums.size())-1;//list 下标从0开始
if(k<0){//另外一种可能是数到最后了 要把最后一个元素移除掉
System.out.println(sums.get(sums.size()-1));
sums.remove(sums.size()-1);
k=0;
}else{
System.out.println(sums.get(k));
sums.remove(k);
}
}
}
}