黑马程序员技术交流社区
标题:
约瑟夫问题
[打印本页]
作者:
余旋
时间:
2015-11-8 12:25
标题:
约瑟夫问题
package com.oxbridge.cos;
import java.util.LinkedList;
import java.util.List;
/*约瑟夫问题,一个人数为N的环,从第K个元素开始报数,数到第M个元素,将这个元素从环中移除
*
*/
public class MathDemo {
public static void main(String[] args) {
//定义一个集合用于存放人的编号,由于移除动作较多选择LinkedList
List<Integer> list = new LinkedList<Integer>();
for(int i=1;i<=N;i++)
{
list.add(i);
}
//用一个成员变量记录开始的位置
int next = K-1;
//最后剩余一人,可知要删除N-1个元素
for(int time=1;time<=N-1;time++)
{
//从开始位置往下数第M-1个元素就是要移除的元素,移除后List发生变化
next = (next+M-1)%list.size();
list.remove(next);
}
//最后集合中剩下的元素就是那个没有出去人的编号
System.out.println(list.get(0));
}
}
复制代码
从网上学习来的解题思路,分享一起学习下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2