报数游戏


    有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);

 booleanadd(E e)
          将指定元素添加到此向量的末尾。
 Eremove(int index)
          移除此向量中指定位置的元素。


题目基本思想呢是先移除一个,然后又在Vector后边加一个相同的,然后移除第二个,再加上第二个,到第三个的时候只移除,不添加。

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);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值