报数游戏
2017-01-20 21:59
239 查看
有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。
题目基本思想呢是先移除一个,然后又在Vector后边加一个相同的,然后移除第二个,再加上第二个,到第三个的时候只移除,不添加。
Vector a = new Vector(); for(int i=1; i<=10; i++) { a.add("第" + i + "个孩子"); } for(;;) { if(a.size()==1) break; for(int k=0; k<2; k++) ________________;//填空 a.remove(0); } System.out.println(a);
boolean | add(E e) 将指定元素添加到此向量的末尾。 |
E | remove(int index) 移除此向量中指定位置的元素。 |
public static void main(String[] args) { Vector<String> a = new Vector<String>(); //试用泛型更加规范 for(int i=1; i<=10; i++) { a.add("第" + i + "个孩子"); } for(;;) { if(a.size()==1) break; for(int k=0; k<2; k++) { String j = a.remove(0); //remove方法返回被移除的对象 a.add(j); //将刚移除的对象再次加入 } a.remove(0); } System.out.println(a); }