本帖最后由 zhouchao 于 2013-7-29 12:07 编辑
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人
这个题目我有个思路是这样的
建立集合将1-100有序存入
对集合中元素进行迭代 在计数器为十四的时候将元素进行移除,并返回继续进行迭代 代码如下
public class Test10 {
static int count = 1;
public static void main(String[] args) {
ArrayList al = new ArrayList();
for(int x=1;x<=100;x++)
{
al.add(x);
}
System.out.println(theLast(al));
}
private static ArrayList theLast(ArrayList al)
{
Iterator it = al.iterator();
while(true)
{
//System.out.println("zc");
if(it.hasNext())
{
if(count != 14)
{
//14被移除后 无法继续下面的it.next()
System.out.println(it.next());
count++;
}
if(count == 14)
{
System.out.println(al.remove(it.next()));
//System.out.println(al);
count = 0;
//System.out.println(count);
continue;
}
}
else
{
if(al.size()>1)
theLast(al);
else
return al;
}
}
}
}
在14被移除后 无法继续下面的it.next()
System.out.println(it.next());
求高手指教原因,以及是否有解决办法
|