本帖最后由 xclyijin 于 2015-7-26 14:23 编辑
问题:有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
我看到网上有一个很简便的程序,是这样的:
public static void main(String[] args) {
// TODO Auto-generated method stub
int bomb=14;
cycleGame(bomb);
}
public static void cycleGame(int bomb) {
// TODO Auto-generated method stub
//创建一个链表集合,用于存放数据
List<Integer> list=new ArrayList<Integer>();
for(int i=1;i<=100;i++)
{
list.add(i);
}
System.out.println(list);
int s=0;
for(int i=1;i<100;i++)
{
s=(s+13)%list.size();//为什么这样就可以求出下次退出的人的编号呢??想不明白。
list.remove(s);
}
System.out.println(list);
}
|
|