A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾浩田 高级黑马   /  2014-10-18 23:18  /  1023 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.ArrayList;
  2. import java.util.LinkedList;
  3. import java.util.List;

  4. //要求:有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新
  5. //开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
  6. public class Test30 {
  7.         public static void main(String[] args){
  8.                 //由于涉及到数组集合的增删,所以使用LinkedList效率更高一些
  9.                 List<Integer> list = new LinkedList<Integer>();
  10.                 for(int i = 1; i<=100; i++){
  11.                         list.add(i);
  12.                 }
  13.                 List<Integer> listOut = new ArrayList<Integer>();
  14.                 int num = 0;
  15.                 while(list.size() > 0){       //只要集合中还有元素,就继续进行判断
  16.                         num++;
  17.             Integer remove= (Integer) list.remove(0);
  18.             if(num==14)
  19.             {
  20.                 listOut.add(remove);       //把每次喊道14移走的元素都存入另外一个集合
  21.                 num=0;
  22.             }         
  23.                 }
  24.                 System.out.println(listOut);   //打印移出队列中的元素               
  25.                
  26.         }
  27. }
复制代码
不知道这道题要问的到底是什么?最后打印的集合中是移出队列的集合。大家是怎么想的啊??

2 个回复

正序浏览
刘树弘 发表于 2014-10-19 09:21
问的是没有退出数数游戏的人的标号?

是最后一个喊14的人的标号,即移除第一批元素后,在将这些人重新围城一个圈,继续喊号,最后一个移除的人就是所求结果
回复 使用道具 举报
问的是没有退出数数游戏的人的标号?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马