1、题目概述:
设计这样一个游戏,共有N人围成圆圈,设定一个数字m,从第一个人开始报号,报到m的退出游戏,余下的人继续报号,以此往复,直到剩下最后一个人即为胜者。
2、代码实现:
public class YueSefu {
public static void main(String[] args) {
int[] arr={1,2,3,4,5,6,7,8,9,10,11};
int n=arr.length+1;
int m=3;
System.out.println(YueSefuHuan(n,m));
}
public static int YueSefuHuan(int n,int m){
LinkedList<Integer> list = new LinkedList<Integer>();
int index = 0;
for (int i = 0; i < n; i ++) {
list.add(i);
}
while (list.size() > 1) {
index = (index + m - 1) % list.size();
list.remove(index);
}
return list.size() == 1 ? list.get(0) : -1;
}
}