public static int LuckyMan(int n,int m){
//n为总人数,m为剔除人数的数字
//首先将n个人先加入到list集合中
ArrayList<Integer> list = new ArrayList<>();
for(int i=1;i<=n;i++){
list.add(i);
}
//设立计数器count
int count =1;
//遍历list集合,直到剩下最后一个
for(int i=0;list.size()>1;i++){
//当角标超过最大值后 角标归0
if(i==list.size()){
i=0;
}
//当数到m的时候将该人从list中剔除,并将角标向前移一
if(count%m==0){
list.remove(i--);
}
count++;
}
return list.get(0);
}
本文介绍了一个关于约瑟夫环问题的经典算法实现。通过Java代码演示了如何在一个包含n个人的圆圈中,每数到第m个人就将其剔除,直至最后只剩下一个人的过程。该算法使用ArrayList作为数据结构来模拟这一过程。
1万+

被折叠的 条评论
为什么被折叠?



