首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

求好手来给点思路,算法学得不好。

2012-11-04 
求高手来给点思路,算法学得不好。。。有500个小朋友拉成一个圆圈,从其中一个小朋友开始依次编号1-500,从1号小

求高手来给点思路,算法学得不好。。。
有500个小朋友拉成一个圆圈,从其中一个小朋友开始依次编号1-500,从1号小朋友开始循环1-3报数,数到3的小朋友就退出。编写一个Java应用程序,计算出最后一个小朋友的号码是多少?

我估计我的代码明显错了,理解有问题,好像不是这样做的,求解?
package Four;

import java.util.ArrayList;
import java.util.List;

public class A5 {
public static int getNumber(List<Integer> list){
int number=0;
for(int i=0;i<list.size();i++){
if((i+1)%3==0){list.set(i,0);}
}
for(int i=0;i<list.size();){
if(list.get(i)==0){
list.remove(i);continue;
}
i++;
}
if(list.size()==3){number=list.get(2);}
else{number=getNumber(list);}
return number;

}
public static void main(String args[]){
ArrayList<Integer> list=new ArrayList<Integer>();
for(int i=1;i<=500;i++)
list.add(i);
System.out.println("最后一个退出的编号是"+getNumber(list));

}

}


[解决办法]
约瑟夫环
[解决办法]
用LinkedList吧

热点排行