黑马程序员技术交流社区

标题: 约瑟夫问题 [打印本页]

作者: xclyijin    时间: 2015-7-26 13:57
标题: 约瑟夫问题
本帖最后由 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);
}
  



yuesefu.PNG (136.83 KB, 下载次数: 2)

yuesefu.PNG





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2