Josephus环问题——顺序表求解

来源:互联网 发布:淘宝号不能登陆怎么办 编辑:程序博客网 时间:2024/05/31 06:21

Josephus环问题——顺序表求解

算法描述:

①创建一个具有number个元素的顺序表对象list。

②从第start个元素开始,依次计数,每数到distance,就将该元素删除。

③重复计数并删除元素,直到剩下一个元素。


public class SeqList_Josephus {public SeqList_Josephus(int num, int start, int distance) {SeqList<String> list = new SeqList<String>(num);for(int i = 0; i<num; i++){list.insert((char)('A'+i)+"");  //表尾插入,O(1)}System.out.println(list.toString());int i = start;        while(list.size() > 1){         //表中多于一个元素,继续循环i = (i + distance - 1) % list.size();    //循环遍历System.out.println("删除"+list.remove(i).toString()+", ");    //删除i位置的元素,O(n)System.out.println(list.toString());}System.out.println("被赦免者是:"+list.get(0).toString());}public static void main(String[] args) {new SeqList_Josephus(5,0,2);}}


运行结果:

SeqList.SeqList(A, B, C, D, E) 删除B, SeqList.SeqList(A, C, D, E) 删除D, SeqList.SeqList(A, C, E) 删除A, SeqList.SeqList(C, E) 删除E, SeqList.SeqList(C) 被赦免者是:C


原创粉丝点击