Josephus环问题——顺序表求解

Josephus环问题——顺序表求解

算法描述:

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

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

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


public class SeqList_Josephus {
	
	public SeqList_Josephus(int num, int start, int distance) {
		SeqList list = new SeqList(num);
		for(int i = 0; i 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


你可能感兴趣的:(Josephus环问题——顺序表求解)