約瑟夫環(約瑟夫問題)是乙個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。
單鏈表參考:
約瑟夫環運作如下:
1、一群人圍在一起坐成環狀(如:n)
2、從某個編號開始報數(如:k)
3、數到某個數(如:m)的時候,此人出列,下乙個人重新報數
4、一直迴圈,直到所有人出列,約瑟夫環結束
下面是使用順序錶類seqlist求解約瑟夫環問題的**:
package com.clarck.datastructure.linked;
/** * 使用單鏈表求解約瑟夫環問題
* * @author clarck
* */
public class josephus_singlylinkedlist
system.out.println("被赦免者是" + list.get(0).tostring());
}public static void main(string args)
}
執行結果:
約瑟夫環(5,1,2),(a,b,c,d,e)
刪除b,(a,c,d,e)
刪除d,(a,c,e)
刪除a,(c,e)
刪除e,(c)
被赦免者是c
JAVA求解約瑟夫環
與前面我們介紹的大多數程式問題一樣,約瑟夫環問題也是來自於乙個故事。這個故事發生在乙個名叫約瑟夫的猶太人身上,據說在羅馬人占領喬塔帕特後,39 個猶太人與約瑟夫及他的朋友躲到乙個洞中,39個猶太人決定寧願死也不要被敵人到,於是決定了乙個自殺方式,41個人排成乙個圓圈,由第1個人 開始報數,每報數到第...
用迴圈佇列求解約瑟夫環問題
用迴圈佇列求解約瑟夫環問題普通形式求解 對比分析 設有n個人站成一圈,其編號為1 n。從編號為1的人開始按順時針方向1 2 迴圈報數,數到m的人出列,然後從出列者的下乙個人重新開始報數,數到m的人又出列,如此重複進行,直到n個人都出列為止。要求輸出這n個人的出列順序。例子展示 當n 5,m 2時的約...
迴圈鏈表示例 求解約瑟夫問題
錯誤 debug assertion failed!迴圈鍊錶模板class include using namespace std template struct circlelinknode circlelinknode t d,circlelinknode next null data d li...