题目要求:
n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。
public class Main{
/**
* @param args
*/
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.remove(0);
}
System.out.println(a);
}
}
【分析】:
在for(;;)循环中循环结束的标志就是 vector集合中只有一个元素。 这很好理解,最后只剩下了一个元素。
a.add(a.remove(0))
在此题中,假设是从1 开始的,顺时针为 1 -2-3-4(此处省略6个数)。
变成了3-4-5-6~~~10-1-2。原来的报3的元素,就变成了报0的元素。在加上 填空下面的a.remove(0)。
自然的就是移除报数为3的元素了。