您的位置:首页 > 其它

50个人围成圈,数到3和3的倍数时出圈,求剩下的人及其原来的位置

2014-08-27 11:45 375 查看
import java.util.LinkedList;
import java.util.List;

/**
*  50个人围成圈,数到3和3的倍数时出圈,求剩下的人及其原来的位置
* @author Joson.Liu
* 2014.08.27
*/
public class Circle {
public static void main(String args[]){
System.out.println("剩下的人其原来位置为"+cycle(50,3));
}

private static int cycle(int total,int k){
List<Integer> dataList=new LinkedList<Integer>();//用链表进行存储
for(int i=0;i<total;i++)//初始化链表
dataList.add(new Integer(i+1));
//定义下标,模拟已经去掉一个元素,因此从-1开始
int index=-1;
//一直循环去除数据,直到只剩下一个元素
while(dataList.size()>1){
index=(index+k)%dataList.size();
dataList.remove(index--);
}
return dataList.get(0);
}
}


亮点:

充分利用了取余的特性及链表特性,当然也可以用数组存储,这个自己考虑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐