有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。 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);应该怎么做?
if (a.size()>=3) {
a.insertElementAt(a.get(0),a.size());
a.remove(0);
}
if (a.size()==2) {
break;
}
}
百度一下一大堆
http://mopishv0.blog.163.com/blog/static/54455932200981295817729/
LZ也可以看看这个 有公式
import java.util.Vector;public class Test {
public static void main(String[] args) {
Vector a = new Vector(); for (int i = 1; i <= 10; i++) {
a.add("第" + i + "个孩子");
} int i = 0;
for (;;) {
if (a.size() == 1) break;
i = (i + 2) % a.size();
a.remove(i);
} System.out.println(a);
}
}
import java.util.Vector;public class Test {
public static void main(String[] args) {
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.add(a.remove(0));
a.remove(0);
} System.out.println(a);
}
}