使用單鏈表求解約瑟夫環問題

2021-06-26 13:17:00 字數 762 閱讀 7713

約瑟夫環(約瑟夫問題)是乙個數學的應用問題:已知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...