約瑟夫問題的通用解決方案-猴子選大王

約瑟夫問題的通用解決方案,用了隊列(jdk裏面的)

 

題目描述:n只猴子要選大王,選舉方法如下:所有猴子按 1,2 ……… n 編號並按照順序圍成一圈,從第 k 個猴子起,由1開始報數,報到m時,該猴子就跳出圈外,下一隻猴子再次由1開始報數,如此循環,直到圈內剩下一隻猴子時,這隻猴子就是大王。

import sun.misc.Queue;


/** 
 * @author: Dahai He
 * @time: 2010-7-14 下午02:28:50
 */
public class Test{

	public static void main(String[] args) {
		//指定位置,在第幾個位置進行剔除
		int M = 3;
		//指定隊列的大小
        int N = 10;
        //初始化隊列
        Queue q = new Queue();
        //把成員壓入隊列
        for (int i = 1; i <= N; i++){
            q.enqueue(i);
        }
        //對隊列進行循環查找
        try {
	        while (!q.isEmpty()) {
	            for (int i = 0; i < M - 1; i++){
	            	//如果不是指定位置的元素,隊列頭直接去隊尾
					q.enqueue(q.dequeue());
	            }
	            //把指定位置的元素提出隊列
	            System.out.println(q.dequeue() + " ");
	        } 
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
	}

}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章